emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/net/tramp.el


From: Michael Albinus
Subject: [Emacs-diffs] Changes to emacs/lisp/net/tramp.el
Date: Sun, 07 Aug 2005 11:42:45 -0400

Index: emacs/lisp/net/tramp.el
diff -c emacs/lisp/net/tramp.el:1.71 emacs/lisp/net/tramp.el:1.72
*** emacs/lisp/net/tramp.el:1.71        Mon Aug  1 15:17:06 2005
--- emacs/lisp/net/tramp.el     Sun Aug  7 15:42:42 2005
***************
*** 4,10 ****
  ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
  ;;   2005 Free Software Foundation, Inc.
  
! ;; Author: address@hidden
  ;; Keywords: comm, processes
  
  ;; This file is part of GNU Emacs.
--- 4,11 ----
  ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
  ;;   2005 Free Software Foundation, Inc.
  
! ;; Author: Kai Gro,A_(Bjohann <address@hidden>
! ;;         Michael Albinus <address@hidden>
  ;; Keywords: comm, processes
  
  ;; This file is part of GNU Emacs.
***************
*** 147,157 ****
    (when (boundp 'byte-compile-not-obsolete-var)
      (setq byte-compile-not-obsolete-var 'directory-sep-char)))
  
- ;; XEmacs byte-compiler raises warning abouts `last-coding-system-used'.
- (eval-when-compile
-   (unless (boundp 'last-coding-system-used)
-     (defvar last-coding-system-used nil)))
- 
  ;;; User Customizable Internal Variables:
  
  (defgroup tramp nil
--- 148,153 ----
***************
*** 1031,1037 ****
    :type 'regexp)
  
  (defcustom tramp-user-regexp
!   "[^:@/ \t]*"
    "*Regexp matching user names."
    :group 'tramp
    :type 'regexp)
--- 1027,1033 ----
    :type 'regexp)
  
  (defcustom tramp-user-regexp
!   "[^:/ \t]*"
    "*Regexp matching user names."
    :group 'tramp
    :type 'regexp)
***************
*** 1914,1920 ****
          tramp-current-multi-method tramp-current-method
          tramp-current-user tramp-current-host))
          (goto-char (point-max))
!         (tramp-insert-with-face
           'italic
           (concat "# " (apply #'format fmt-string args) "\n"))))))
  
--- 1910,1918 ----
          tramp-current-multi-method tramp-current-method
          tramp-current-user tramp-current-host))
          (goto-char (point-max))
!       (unless (bolp)
!         (insert "\n"))
!       (tramp-insert-with-face
           'italic
           (concat "# " (apply #'format fmt-string args) "\n"))))))
  
***************
*** 2370,2385 ****
           (buffer-name)))
    (if time-list
        (tramp-run-real-handler 'set-visited-file-modtime (list time-list))
!     (let ((f (buffer-file-name))
!         (coding-system-used nil))
        (with-parsed-tramp-file-name f nil
        (let* ((attr (file-attributes f))
               ;; '(-1 65535) means file doesn't exists yet.
               (modtime (or (nth 5 attr) '(-1 65535))))
          ;; We use '(0 0) as a don't-know value.  See also
          ;; `tramp-handle-file-attributes-with-ls'.
-         (when (boundp 'last-coding-system-used)
-           (setq coding-system-used last-coding-system-used))
          (if (not (equal modtime '(0 0)))
              (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
            (save-excursion
--- 2368,2380 ----
           (buffer-name)))
    (if time-list
        (tramp-run-real-handler 'set-visited-file-modtime (list time-list))
!     (let ((f (buffer-file-name)))
        (with-parsed-tramp-file-name f nil
        (let* ((attr (file-attributes f))
               ;; '(-1 65535) means file doesn't exists yet.
               (modtime (or (nth 5 attr) '(-1 65535))))
          ;; We use '(0 0) as a don't-know value.  See also
          ;; `tramp-handle-file-attributes-with-ls'.
          (if (not (equal modtime '(0 0)))
              (tramp-run-real-handler 'set-visited-file-modtime (list modtime))
            (save-excursion
***************
*** 2392,2400 ****
              (setq attr (buffer-substring (point)
                                           (progn (end-of-line) (point)))))
            (setq tramp-buffer-file-attributes attr))
!         (when (boundp 'last-coding-system-used)
!           (setq last-coding-system-used coding-system-used))
!       nil)))))
  
  ;; CCC continue here
  
--- 2387,2393 ----
              (setq attr (buffer-substring (point)
                                           (progn (end-of-line) (point)))))
            (setq tramp-buffer-file-attributes attr))
!         nil)))))
  
  ;; CCC continue here
  
***************
*** 2412,2418 ****
      ;; recorded last modification time.
      (if (or (not (buffer-file-name))
            (eq (visited-file-modtime) 0))
!       t
        (let ((f (buffer-file-name)))
        (with-parsed-tramp-file-name f nil
          (let* ((attr (file-attributes f))
--- 2405,2411 ----
      ;; recorded last modification time.
      (if (or (not (buffer-file-name))
            (eq (visited-file-modtime) 0))
!       t
        (let ((f (buffer-file-name)))
        (with-parsed-tramp-file-name f nil
          (let* ((attr (file-attributes f))
***************
*** 2447,2458 ****
             ;; if and only if that agrees with the buffer's record.
             (t (equal mt '(-1 65535))))))))))
  
- (defadvice clear-visited-file-modtime (after tramp activate)
-   "Set `tramp-buffer-file-attributes' back to nil.
- Tramp uses this variable as an emulation for the actual modtime of the file,
- if the remote host can't provide the modtime."
-   (setq tramp-buffer-file-attributes nil))
- 
  (defun tramp-handle-set-file-modes (filename mode)
    "Like `set-file-modes' for tramp files."
    (with-parsed-tramp-file-name filename nil
--- 2440,2445 ----
***************
*** 3137,3144 ****
            tramp-current-method method
            tramp-current-user user
            tramp-current-host host)
!       (tramp-message
!        5 "Transferring %s to file %s..." filename newname)
  
        ;; Use rcp-like program for file transfer.
        (let ((p (apply 'start-process (buffer-name trampbuf) trampbuf
--- 3124,3130 ----
            tramp-current-method method
            tramp-current-user user
            tramp-current-host host)
!       (message "Transferring %s to %s..." filename newname)
  
        ;; Use rcp-like program for file transfer.
        (let ((p (apply 'start-process (buffer-name trampbuf) trampbuf
***************
*** 3147,3154 ****
        (tramp-process-actions p multi-method method user host
                               tramp-actions-copy-out-of-band))
        (kill-buffer trampbuf)
!       (tramp-message
!        5 "Transferring %s to file %s...done" filename newname)
  
        ;; Set the mode.
        (unless keep-date
--- 3133,3139 ----
        (tramp-process-actions p multi-method method user host
                               tramp-actions-copy-out-of-band))
        (kill-buffer trampbuf)
!       (message "Transferring %s to %s...done" filename newname)
  
        ;; Set the mode.
        (unless keep-date
***************
*** 3319,3325 ****
    (filename switches &optional wildcard full-directory-p)
    "Like `insert-directory' for tramp files."
    (if (and (boundp 'ls-lisp-use-insert-directory-program)
!            (not ls-lisp-use-insert-directory-program))
        (tramp-run-real-handler 'insert-directory
                                (list filename switches wildcard 
full-directory-p))
      ;; For the moment, we assume that the remote "ls" program does not
--- 3304,3310 ----
    (filename switches &optional wildcard full-directory-p)
    "Like `insert-directory' for tramp files."
    (if (and (boundp 'ls-lisp-use-insert-directory-program)
!            (not (symbol-value 'ls-lisp-use-insert-directory-program)))
        (tramp-run-real-handler 'insert-directory
                                (list filename switches wildcard 
full-directory-p))
      ;; For the moment, we assume that the remote "ls" program does not
***************
*** 3505,3511 ****
  ;; Remote commands.
  
  (defvar tramp-async-proc nil
!   "Global variable keeping asyncronous process object.
  Used in `tramp-handle-shell-command'")
  
  (defun tramp-handle-shell-command (command &optional output-buffer 
error-buffer)
--- 3490,3496 ----
  ;; Remote commands.
  
  (defvar tramp-async-proc nil
!   "Global variable keeping asynchronous process object.
  Used in `tramp-handle-shell-command'")
  
  (defun tramp-handle-shell-command (command &optional output-buffer 
error-buffer)
***************
*** 3762,3768 ****
                              'insert-file-contents)
                      'file-local-copy)))
               (file-local-copy filename)))
-           (coding-system-used nil)
            (result nil))
        (when visit
          (setq buffer-file-name filename)
--- 3747,3752 ----
***************
*** 3772,3786 ****
         multi-method method user host
         9 "Inserting local temp file `%s'..." local-copy)
        (setq result (insert-file-contents local-copy nil beg end replace))
-       ;; Now `last-coding-system-used' has right value.  Remember it.
-       (when (boundp 'last-coding-system-used)
-         (setq coding-system-used last-coding-system-used))
        (tramp-message-for-buffer
         multi-method method user host
         9 "Inserting local temp file `%s'...done" local-copy)
        (delete-file local-copy)
-       (when (boundp 'last-coding-system-used)
-         (setq last-coding-system-used coding-system-used))
        (list (expand-file-name filename)
              (second result))))))
  
--- 3756,3765 ----
***************
*** 3845,3851 ****
    ;;              (string= lockname filename))
    ;;    (error
    ;;     "tramp-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
!   ;; XEmacs takes a coding system as the sevent argument, not `confirm'
    (when (and (not (featurep 'xemacs))
             confirm (file-exists-p filename))
      (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
--- 3824,3830 ----
    ;;              (string= lockname filename))
    ;;    (error
    ;;     "tramp-handle-write-region: LOCKNAME must be nil or equal FILENAME"))
!   ;; XEmacs takes a coding system as the seventh argument, not `confirm'
    (when (and (not (featurep 'xemacs))
             confirm (file-exists-p filename))
      (unless (y-or-n-p (format "File %s exists; overwrite anyway? "
***************
*** 3859,3871 ****
          (loc-dec (tramp-get-local-decoding multi-method method user host))
          (trampbuf (get-buffer-create "*tramp output*"))
          (modes (file-modes filename))
-         ;; We use this to save the value of `last-coding-system-used'
-         ;; after writing the tmp file.  At the end of the function,
-         ;; we set `last-coding-system-used' to this saved value.
-         ;; This way, any intermediary coding systems used while
-         ;; talking to the remote shell or suchlike won't hose this
-         ;; variable.  This approach was snarfed from ange-ftp.el.
-         coding-system-used
          tmpfil)
        ;; Write region into a tmp file.  This isn't really needed if we
        ;; use an encoding function, but currently we use it always
--- 3838,3843 ----
***************
*** 3887,3895 ****
        ;; the backup file.  This case `save-buffer' handles
        ;; permissions.
        (when modes (set-file-modes tmpfil modes))
-       ;; Now, `last-coding-system-used' has the right value.  Remember it.
-       (when (boundp 'last-coding-system-used)
-       (setq coding-system-used last-coding-system-used))
        ;; This is a bit lengthy due to the different methods possible for
        ;; file transfer.  First, we check whether the method uses an rcp
        ;; program.  If so, we call it.  Otherwise, both encoding and
--- 3859,3864 ----
***************
*** 3991,3999 ****
         ;; We must pass modtime explicitely, because filename can be different
         ;; from (buffer-file-name), f.e. if `file-precious-flag' is set.
         (nth 5 (file-attributes filename))))
-       ;; Make `last-coding-system-used' have the right value.
-       (when (boundp 'last-coding-system-used)
-       (setq last-coding-system-used coding-system-used))
        (when (or (eq visit t)
                (eq visit nil)
                (stringp visit))
--- 3960,3965 ----
***************
*** 4301,4307 ****
          (symbol-function 'PC-expand-many-files))
    (defun PC-expand-many-files (name)
      (if (tramp-tramp-file-p name)
!         (expand-many-files name)
        (tramp-save-PC-expand-many-files name))))
  
  ;; Why isn't eval-after-load sufficient?
--- 4267,4273 ----
          (symbol-function 'PC-expand-many-files))
    (defun PC-expand-many-files (name)
      (if (tramp-tramp-file-p name)
!         (funcall (symbol-function 'expand-many-files) name)
        (tramp-save-PC-expand-many-files name))))
  
  ;; Why isn't eval-after-load sufficient?
***************
*** 4825,4836 ****
  (defun tramp-completion-handle-expand-file-name (name &optional dir)
    "Like `expand-file-name' for tramp files."
    (let ((fullname (concat (or dir default-directory) name)))
!     (tramp-drop-volume-letter
!      (if (tramp-completion-mode fullname)
!        (tramp-run-real-handler
!         'expand-file-name (list name dir))
!        (tramp-completion-run-real-handler
!       'expand-file-name (list name dir))))))
  
  ;;; Internal Functions:
  
--- 4791,4801 ----
  (defun tramp-completion-handle-expand-file-name (name &optional dir)
    "Like `expand-file-name' for tramp files."
    (let ((fullname (concat (or dir default-directory) name)))
!     (if (tramp-completion-mode fullname)
!       (tramp-run-real-handler
!        'expand-file-name (list name dir))
!       (tramp-completion-run-real-handler
!        'expand-file-name (list name dir)))))
  
  ;;; Internal Functions:
  
***************
*** 5127,5138 ****
        (tramp-send-command
         multi-method method user host
         (concat "PS1='$ ' exec " shell)) ;
!       (unless (tramp-wait-for-regexp
!                (get-buffer-process (current-buffer))
!                60 (format "\\(\\(%s\\)\\|\\(%s\\)\\)\\'"
!                         tramp-shell-prompt-pattern shell-prompt-pattern))
!         (pop-to-buffer (buffer-name))
!         (error "Couldn't find remote `%s' prompt" shell))
        (tramp-message
         9 "Setting remote shell prompt...")
        ;; Douglas Gray Stephens <address@hidden> says that we
--- 5092,5100 ----
        (tramp-send-command
         multi-method method user host
         (concat "PS1='$ ' exec " shell)) ;
!       (tramp-barf-if-no-shell-prompt
!        (get-buffer-process (current-buffer))
!        60 "Couldn't find remote `%s' prompt" shell)
        (tramp-message
         9 "Setting remote shell prompt...")
        ;; Douglas Gray Stephens <address@hidden> says that we
***************
*** 5331,5337 ****
      (tramp-message 9 "Waiting 60s for prompt from remote shell")
      (with-timeout (60 (throw 'tramp-action 'timeout))
        (while (not found)
!       (accept-process-output p 1)
        (goto-char (point-min))
        (setq todo actions)
        (while todo
--- 5293,5299 ----
      (tramp-message 9 "Waiting 60s for prompt from remote shell")
      (with-timeout (60 (throw 'tramp-action 'timeout))
        (while (not found)
!       (tramp-accept-process-output p 1)
        (goto-char (point-min))
        (setq todo actions)
        (while todo
***************
*** 5368,5374 ****
      (tramp-message 9 "Waiting 60s for prompt from remote shell")
      (with-timeout (60 (throw 'tramp-action 'timeout))
        (while (not found)
!       (accept-process-output p 1)
        (setq todo actions)
        (goto-char (point-min))
        (while todo
--- 5330,5336 ----
      (tramp-message 9 "Waiting 60s for prompt from remote shell")
      (with-timeout (60 (throw 'tramp-action 'timeout))
        (while (not found)
!       (tramp-accept-process-output p 1)
        (setq todo actions)
        (goto-char (point-min))
        (while todo
***************
*** 5757,5762 ****
--- 5719,5732 ----
  
  ;; Utility functions.
  
+ (defun tramp-accept-process-output
+   (&optional process timeout timeout-msecs)
+   "Like `accept-process-output' for Tramp processes.
+ This is needed in order to hide `last-coding-system-used', which is set
+ for process communication also."
+   (let (last-coding-system-used)
+     (accept-process-output process timeout timeout-msecs)))
+ 
  (defun tramp-wait-for-regexp (proc timeout regexp)
    "Wait for a REGEXP to appear from process PROC within TIMEOUT seconds.
  Expects the output of PROC to be sent to the current buffer.  Returns
***************
*** 5773,5792 ****
                            timeout))
               (with-timeout (timeout)
                 (while (not found)
!                  (accept-process-output proc 1)
                 (unless (memq (process-status proc) '(run open))
                   (error "Process has died"))
                   (goto-char (point-min))
!                  (setq found (when (re-search-forward regexp nil t)
!                                (tramp-match-string-list)))))))
            (t
             (while (not found)
!              (accept-process-output proc 1)
             (unless (memq (process-status proc) '(run open))
               (error "Process has died"))
               (goto-char (point-min))
!              (setq found (when (re-search-forward regexp nil t)
!                            (tramp-match-string-list))))))
      (when tramp-debug-buffer
        (append-to-buffer
         (tramp-get-debug-buffer tramp-current-multi-method tramp-current-method
--- 5743,5760 ----
                            timeout))
               (with-timeout (timeout)
                 (while (not found)
!                  (tramp-accept-process-output proc 1)
                 (unless (memq (process-status proc) '(run open))
                   (error "Process has died"))
                   (goto-char (point-min))
!                  (setq found (re-search-forward regexp nil t))))))
            (t
             (while (not found)
!              (tramp-accept-process-output proc 1)
             (unless (memq (process-status proc) '(run open))
               (error "Process has died"))
               (goto-char (point-min))
!              (setq found (re-search-forward regexp nil t)))))
      (when tramp-debug-buffer
        (append-to-buffer
         (tramp-get-debug-buffer tramp-current-multi-method tramp-current-method
***************
*** 6399,6405 ****
                              timeout))
                 (with-timeout (timeout)
                   (while (not found)
!                    (accept-process-output proc 1)
                   (unless (memq (process-status proc) '(run open))
                     (error "Process has died"))
                     (goto-char (point-max))
--- 6367,6373 ----
                              timeout))
                 (with-timeout (timeout)
                   (while (not found)
!                    (tramp-accept-process-output proc 1)
                   (unless (memq (process-status proc) '(run open))
                     (error "Process has died"))
                     (goto-char (point-max))
***************
*** 6407,6413 ****
                     (setq found (looking-at end-of-output))))))
              (t
               (while (not found)
!                (accept-process-output proc 1)
               (unless (memq (process-status proc) '(run open))
                 (error "Process has died"))
                 (goto-char (point-max))
--- 6375,6381 ----
                     (setq found (looking-at end-of-output))))))
              (t
               (while (not found)
!                (tramp-accept-process-output proc 1)
               (unless (memq (process-status proc) '(run open))
                 (error "Process has died"))
                 (goto-char (point-max))
***************
*** 6444,6461 ****
      ;; Return value is whether end-of-output sentinel was found.
      found))
  
- (defun tramp-match-string-list (&optional string)
-   "Returns list of all match strings.
- That is, (list (match-string 0) (match-string 1) ...), according to the
- number of matches."
-   (let* ((nmatches (/ (length (match-data)) 2))
-          (i (- nmatches 1))
-          (res nil))
-     (while (>= i 0)
-       (setq res (cons (match-string i string) res))
-       (setq i (- i 1)))
-     res))
- 
  (defun tramp-send-command-and-check (multi-method method user host command
                                                    &optional subshell)
    "Run COMMAND and check its exit status.
--- 6412,6417 ----
***************
*** 6556,6562 ****
  If `tramp-discard-garbage' is nil, just erase buffer."
    (if (not tramp-discard-garbage)
        (erase-buffer)
!     (while (prog1 (erase-buffer) (accept-process-output p 0.25))
        (when tramp-debug-buffer
          (save-excursion
            (set-buffer (tramp-get-debug-buffer multi-method method user host))
--- 6512,6518 ----
  If `tramp-discard-garbage' is nil, just erase buffer."
    (if (not tramp-discard-garbage)
        (erase-buffer)
!     (while (prog1 (erase-buffer) (tramp-accept-process-output p 0.25))
        (when tramp-debug-buffer
          (save-excursion
            (set-buffer (tramp-get-debug-buffer multi-method method user host))
***************
*** 6993,6999 ****
        ;; auto-saved file belonging to another original file.  This could
        ;; be a security threat.
        (set-file-modes buffer-auto-save-file-name
!                     (or (file-modes bfn) ?\600)))))
  
  (unless (or (> emacs-major-version 21)
            (and (featurep 'xemacs)
--- 6949,6955 ----
        ;; auto-saved file belonging to another original file.  This could
        ;; be a security threat.
        (set-file-modes buffer-auto-save-file-name
!                     (or (file-modes bfn) #o600)))))
  
  (unless (or (> emacs-major-version 21)
            (and (featurep 'xemacs)
***************
*** 7130,7139 ****
    "Specify if query is needed for process when Emacs is exited.
  If the second argument flag is non-nil, Emacs will query the user before
  exiting if process is running."
    (if (fboundp 'set-process-query-on-exit-flag)
!       (set-process-query-on-exit-flag process flag)
!     (funcall (symbol-function 'process-kill-without-query)
!            process flag)))
  
  
  ;; ------------------------------------------------------------
--- 7086,7096 ----
    "Specify if query is needed for process when Emacs is exited.
  If the second argument flag is non-nil, Emacs will query the user before
  exiting if process is running."
+  (funcall
    (if (fboundp 'set-process-query-on-exit-flag)
!       (symbol-function 'set-process-query-on-exit-flag)
!     (symbol-function 'process-kill-without-query))
!   process flag))
  
  
  ;; ------------------------------------------------------------
***************
*** 7213,7232 ****
  ;; CCC: This check is now also really awful; we should search all
  ;; of the filename format, not just the prefix.
  (when (string-match "\\[" tramp-prefix-format)
! (defadvice file-expand-wildcards (around tramp-fix activate)
!   (let ((name (ad-get-arg 0)))
!     (if (tramp-tramp-file-p name)
!       ;; If it's a Tramp file, dissect it and look if wildcards
!       ;; need to be expanded at all.
!       (let ((v (tramp-dissect-file-name name)))
!         (if (string-match "[[*?]" (tramp-file-name-localname v))
!             (let ((res ad-do-it))
!               (setq ad-return-value (or res (list name))))
!           (setq ad-return-value (list name))))
!       ;; If it is not a Tramp file, just run the original function.
!       (let ((res ad-do-it))
!       (setq ad-return-value (or res (list name)))))))
! )
  
  ;; Tramp version is useful in a number of situations.
  
--- 7170,7188 ----
  ;; CCC: This check is now also really awful; we should search all
  ;; of the filename format, not just the prefix.
  (when (string-match "\\[" tramp-prefix-format)
!   (defadvice file-expand-wildcards (around tramp-fix activate)
!     (let ((name (ad-get-arg 0)))
!       (if (tramp-tramp-file-p name)
!         ;; If it's a Tramp file, dissect it and look if wildcards
!         ;; need to be expanded at all.
!         (let ((v (tramp-dissect-file-name name)))
!           (if (string-match "[[*?]" (tramp-file-name-localname v))
!               (let ((res ad-do-it))
!                 (setq ad-return-value (or res (list name))))
!             (setq ad-return-value (list name))))
!       ;; If it is not a Tramp file, just run the original function.
!       (let ((res ad-do-it))
!         (setq ad-return-value (or res (list name))))))))
  
  ;; Tramp version is useful in a number of situations.
  
***************
*** 7246,7314 ****
    (interactive)
    (require 'reporter)
    (catch 'dont-send
!     (let ((reporter-prompt-for-summary-p      t))
        (reporter-submit-bug-report
         tramp-bug-report-address               ; to-address
         (format "tramp (%s)" tramp-version) ; package name and version
!        `(;; Current state
!        tramp-ls-command
!        tramp-test-groks-nt
!        tramp-file-exists-command
!        tramp-current-multi-method
!        tramp-current-method
!        tramp-current-user
!        tramp-current-host
! 
!        ;; System defaults
!        tramp-auto-save-directory        ; vars to dump
!        tramp-default-method
!        tramp-rsh-end-of-line
!        tramp-default-password-end-of-line
!        tramp-remote-path
!        tramp-login-prompt-regexp
!        tramp-password-prompt-regexp
!        tramp-wrong-passwd-regexp
!        tramp-yesno-prompt-regexp
!        tramp-yn-prompt-regexp
!        tramp-terminal-prompt-regexp
!        tramp-temp-name-prefix
!        tramp-file-name-structure
!        tramp-file-name-regexp
!        tramp-multi-file-name-structure
!        tramp-multi-file-name-hop-structure
!        tramp-multi-methods
!        tramp-multi-connection-function-alist
!        tramp-methods
!        tramp-end-of-output
!        tramp-coding-commands
!        tramp-actions-before-shell
!        tramp-actions-copy-out-of-band
!        tramp-multi-actions
!        tramp-terminal-type
!        tramp-shell-prompt-pattern
!        tramp-chunksize
!        ,(when (boundp 'tramp-backup-directory-alist)
!           'tramp-backup-directory-alist)
!        ,(when (boundp 'tramp-bkup-backup-directory-info)
!           'tramp-bkup-backup-directory-info)
! 
!        ;; Non-tramp variables of interest
!        shell-prompt-pattern
!        backup-by-copying
!        backup-by-copying-when-linked
!        backup-by-copying-when-mismatch
!        ,(when (boundp 'backup-by-copying-when-privileged-mismatch)
!           'backup-by-copying-when-privileged-mismatch)
!        ,(when (boundp 'password-cache)
!           'password-cache)
!        ,(when (boundp 'password-cache-expiry)
!           'password-cache-expiry)
!        ,(when (boundp 'backup-directory-alist)
!           'backup-directory-alist)
!        ,(when (boundp 'bkup-backup-directory-info)
!           'bkup-backup-directory-info)
!        file-name-handler-alist)
!        nil                            ; pre-hook
         'tramp-append-tramp-buffers    ; post-hook
         "\
  Enter your bug report in this message, including as much detail as you
--- 7202,7275 ----
    (interactive)
    (require 'reporter)
    (catch 'dont-send
!     (let ((reporter-prompt-for-summary-p t))
        (reporter-submit-bug-report
         tramp-bug-report-address               ; to-address
         (format "tramp (%s)" tramp-version) ; package name and version
!        (delq nil
!            `(;; Current state
!              tramp-ls-command
!              tramp-test-groks-nt
!              tramp-file-exists-command
!              tramp-current-multi-method
!              tramp-current-method
!              tramp-current-user
!              tramp-current-host
! 
!              ;; System defaults
!              tramp-auto-save-directory        ; vars to dump
!              tramp-default-method
!              tramp-rsh-end-of-line
!              tramp-default-password-end-of-line
!              tramp-remote-path
!              tramp-login-prompt-regexp
!              ;; Mask non-7bit characters
!              (tramp-password-prompt-regexp . tramp-reporter-dump-variable)
!              tramp-wrong-passwd-regexp
!              tramp-yesno-prompt-regexp
!              tramp-yn-prompt-regexp
!              tramp-terminal-prompt-regexp
!              tramp-temp-name-prefix
!              tramp-file-name-structure
!              tramp-file-name-regexp
!              tramp-multi-file-name-structure
!              tramp-multi-file-name-hop-structure
!              tramp-multi-methods
!              tramp-multi-connection-function-alist
!              tramp-methods
!              tramp-end-of-output
!              tramp-coding-commands
!              tramp-actions-before-shell
!              tramp-actions-copy-out-of-band
!              tramp-multi-actions
!              tramp-terminal-type
!              ;; Mask non-7bit characters
!              (tramp-shell-prompt-pattern . tramp-reporter-dump-variable)
!              tramp-chunksize
!              ,(when (boundp 'tramp-backup-directory-alist)
!                 'tramp-backup-directory-alist)
!              ,(when (boundp 'tramp-bkup-backup-directory-info)
!                 'tramp-bkup-backup-directory-info)
! 
!              ;; Non-tramp variables of interest
!              ;; Mask non-7bit characters
!              (shell-prompt-pattern . tramp-reporter-dump-variable)
!              backup-by-copying
!              backup-by-copying-when-linked
!              backup-by-copying-when-mismatch
!              ,(when (boundp 'backup-by-copying-when-privileged-mismatch)
!                 'backup-by-copying-when-privileged-mismatch)
!              ,(when (boundp 'password-cache)
!                 'password-cache)
!              ,(when (boundp 'password-cache-expiry)
!                 'password-cache-expiry)
!              ,(when (boundp 'backup-directory-alist)
!                 'backup-directory-alist)
!              ,(when (boundp 'bkup-backup-directory-info)
!                 'bkup-backup-directory-info)
!              file-name-handler-alist))
! 
!        'tramp-load-report-modules     ; pre-hook
         'tramp-append-tramp-buffers    ; post-hook
         "\
  Enter your bug report in this message, including as much detail as you
***************
*** 7327,7334 ****
  --bug report follows this line--
  "))))
  
! (defun tramp-append-tramp-buffers ()
!   "Append Tramp buffers into the bug report."
  
    ;; We load message.el and mml.el from Gnus.
    (if (featurep 'xemacs)
--- 7288,7330 ----
  --bug report follows this line--
  "))))
  
! (defun tramp-reporter-dump-variable (varsym mailbuf)
!   "Pretty-print the value of the variable in symbol VARSYM.
! Used for non-7bit chars in strings."
!   (let* ((reporter-eval-buffer (symbol-value 'reporter-eval-buffer))
!        (val (with-current-buffer reporter-eval-buffer
!               (symbol-value varsym))))
! 
!     ;; There are characters to be masked.
!     (when (and (boundp 'mm-7bit-chars)
!              (string-match
!               (concat "[^" (symbol-value 'mm-7bit-chars) "]") val))
!       (with-current-buffer reporter-eval-buffer
!       (set varsym (concat "(base64-decode-string \""
!                           (base64-encode-string val)
!                           "\")"))))
! 
!     ;; Dump variable.
!     (funcall (symbol-function 'reporter-dump-variable) varsym mailbuf)
! 
!     ;; Remove string quotation.
!     (forward-line -1)
!     (when (looking-at
!          (concat "\\(^.*\\)" "\""                       ;; \1 "
!                  "\\((base64-decode-string \\)" "\\\\"  ;; \2 \
!                  "\\(\".*\\)" "\\\\"                    ;; \3 \
!                  "\\(\")\\)" "\"$"))                    ;; \4 "
!       (replace-match "\\1\\2\\3\\4")
!       (beginning-of-line)
!       (insert " ;; variable encoded due to non-printable characters\n"))
!     (forward-line 1)
! 
!     ;; Reset VARSYM to old value.
!     (with-current-buffer reporter-eval-buffer
!       (set varsym val))))
! 
! (defun tramp-load-report-modules ()
!   "Load needed modules for reporting."
  
    ;; We load message.el and mml.el from Gnus.
    (if (featurep 'xemacs)
***************
*** 7338,7346 ****
      (require 'message nil 'noerror)
      (require 'mml nil 'noerror))
    (when (functionp 'message-mode)
!     (funcall 'message-mode))
    (when (functionp 'mml-mode)
!     (funcall 'mml-mode t))
  
    (when (and
         (eq major-mode 'message-mode)
--- 7334,7345 ----
      (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)))
! 
! (defun tramp-append-tramp-buffers ()
!   "Append Tramp buffers into the bug report."
  
    (when (and
         (eq major-mode 'message-mode)
***************
*** 7394,7403 ****
              (goto-char (point-max))
              (insert "\n\n")
              (dolist (buffer buffer-list)
!               (mml-insert-empty-tag
!                'part 'type "text/plain" 'encoding "base64"
!                'disposition "attachment" 'buffer (buffer-name buffer)
!                'description (buffer-name buffer)))
              (set-buffer-modified-p nil))
  
          ;; Don't send.  Delete the message buffer.
--- 7393,7402 ----
              (goto-char (point-max))
              (insert "\n\n")
              (dolist (buffer buffer-list)
!               (funcall (symbol-function 'mml-insert-empty-tag)
!                        'part 'type "text/plain" 'encoding "base64"
!                        'disposition "attachment" 'buffer (buffer-name buffer)
!                        'description (buffer-name buffer)))
              (set-buffer-modified-p nil))
  
          ;; Don't send.  Delete the message buffer.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]