From fedaf25bb3b36e8bb85ba72a69e06117842c7d64 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 19 Aug 2023 10:08:05 +0200 Subject: [PATCH] Simplify use of Tramp messages * doc/misc/tramp.texi (Traces and Profiles): Don't require a minimum `tramp-verbose' level when `tramp-debug-command-messages' is non-nil. * lisp/net/tramp-message.el (tramp-debug-command-messages): Adapt docstring. (tramp-message, with-tramp-debug-message): Don't require a minimum `tramp-verbose' level when `tramp-debug-command-messages' is non-nil. --- doc/misc/tramp.texi | 5 +-- lisp/net/tramp-message.el | 88 ++++++++++++++++++++------------------- 2 files changed, 47 insertions(+), 46 deletions(-) diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 291d6600af5..6189ef2d41d 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -6125,9 +6125,8 @@ performance of @value{tramp} actions. If @code{tramp-verbose} is greater than or equal to 11, @value{tramp} function call traces are written to the buffer @file{*trace tramp/foo*}. -When @code{tramp-debug-command-messages} is non-@code{nil} and -@code{tramp-verbose} is greater than or equal to 6, the debug buffer -contains all messages with verbosity level 6 (sent and received +When @code{tramp-debug-command-messages} is non-@code{nil}, the debug +buffer contains all messages with verbosity level 6 (sent and received strings), and the entry and exit messages for the function @code{tramp-file-name-handler}. This is intended for @value{tramp} maintainers, analyzing the remote commands for performance analysis. diff --git a/lisp/net/tramp-message.el b/lisp/net/tramp-message.el index cca22a28d7c..c91af638449 100644 --- a/lisp/net/tramp-message.el +++ b/lisp/net/tramp-message.el @@ -32,9 +32,8 @@ ;; This buffer is created when `tramp-verbose' is greater than or ;; equal 4. It contains all messages with a level up to `tramp-verbose'. ;; -;; When `tramp-debug-command-messages' is non-nil and -;; `tramp-verbose' is greater than or equal 6, the buffer contains -;; all messages with level 6 and the entry/exit messages of +;; When `tramp-debug-command-messages' is non-nil, the buffer +;; contains all messages with level 6 and the entry/exit messages of ;; `tramp-file-name-handler'. This is intended to analyze which ;; remote commands are sent for a given file name operation. ;; @@ -85,7 +84,7 @@ The debug file has the same name as the debug buffer, written to (defcustom tramp-debug-command-messages nil "Whether to write only command messages to the debug buffer. -This has only effect if `tramp-verbose' is greater than or equal 6." +This increases `tramp-verbose' to 6 if necessary." :group 'tramp :version "30.1" :type 'boolean) @@ -298,44 +297,47 @@ control string and the remaining ARGUMENTS to actually emit the message (if applicable)." ;; (declare (tramp-suppress-trace t)) (ignore-errors - (when (<= level tramp-verbose) - ;; Display only when there is a minimum level, and the progress - ;; reporter doesn't suppress further messages. - (when (and (<= level 3) (null tramp-inhibit-progress-reporter)) - (apply #'message - (concat - (cond - ((= level 0) "") - ((= level 1) "") - ((= level 2) "Warning: ") - (t "Tramp: ")) - fmt-string) - arguments)) - ;; Log only when there is a minimum level. - (when (>= tramp-verbose 4) - (let ((tramp-verbose 0)) - ;; Append connection buffer for error messages, if exists. - (when (= level 1) - (ignore-errors - (setq fmt-string (concat fmt-string "\n%s") - arguments - (append - arguments - `(,(tramp-get-buffer-string - (if (processp vec-or-proc) - (process-buffer vec-or-proc) - (tramp-get-connection-buffer - vec-or-proc 'dont-create)))))))) - ;; Translate proc to vec. - (when (processp vec-or-proc) - (setq vec-or-proc (process-get vec-or-proc 'tramp-vector)))) - ;; Do it. - (when (and (tramp-file-name-p vec-or-proc) - (or (null tramp-debug-command-messages) (= level 6))) - (apply #'tramp-debug-message - vec-or-proc - (concat (format "(%d) # " level) fmt-string) - arguments)))))) + (let ((tramp-verbose + (if tramp-debug-command-messages + (max tramp-verbose 6) tramp-verbose))) + (when (<= level tramp-verbose) + ;; Display only when there is a minimum level, and the + ;; progress reporter doesn't suppress further messages. + (when (and (<= level 3) (null tramp-inhibit-progress-reporter)) + (apply #'message + (concat + (cond + ((= level 0) "") + ((= level 1) "") + ((= level 2) "Warning: ") + (t "Tramp: ")) + fmt-string) + arguments)) + ;; Log only when there is a minimum level. + (when (>= tramp-verbose 4) + (let ((tramp-verbose 0)) + ;; Append connection buffer for error messages, if exists. + (when (= level 1) + (ignore-errors + (setq fmt-string (concat fmt-string "\n%s") + arguments + (append + arguments + `(,(tramp-get-buffer-string + (if (processp vec-or-proc) + (process-buffer vec-or-proc) + (tramp-get-connection-buffer + vec-or-proc 'dont-create)))))))) + ;; Translate proc to vec. + (when (processp vec-or-proc) + (setq vec-or-proc (process-get vec-or-proc 'tramp-vector)))) + ;; Do it. + (when (and (tramp-file-name-p vec-or-proc) + (or (null tramp-debug-command-messages) (= level 6))) + (apply #'tramp-debug-message + vec-or-proc + (concat (format "(%d) # " level) fmt-string) + arguments))))))) ;; We cannot use the `declare' form for `tramp-suppress-trace' in ;; autoloaded functions, because the tramp-loaddefs.el generation @@ -531,7 +533,7 @@ Bound in `tramp-*-file-name-handler' functions.") If BODY does not raise a debug message, MESSAGE is ignored." (declare (indent 2) (debug t)) (let ((result (make-symbol "result"))) - `(if (and tramp-debug-command-messages (>= tramp-verbose 6)) + `(if tramp-debug-command-messages (save-match-data (let ((tramp-debug-nesting (concat tramp-debug-nesting "#")) -- 2.39.2