Subject: Re: bug#52518: Log only vc-command-messages

From: Stefan Kangas <[email-masked]>
Date: Wed, 15 Dec 2021 14:02:32 -0800

Juri Linkov <[email-masked]> writes:

> It's useful to customize vc-command-messages to t
> to be able to inspect the performed vc commands
> in the *Messages* buffer.  When something goes wrong,
> it's clearly visible what command caused the problem.
>
> But displaying such all vc commands in the echo area
> causes too much noise.  Here is an option to not
> display such messages, only log in the *Messages* buffer:

Good idea.

>  		(when vc-command-messages
> -		  (let ((inhibit-message (eq (selected-window) (active-minibuffer-window))))
> +		  (let ((inhibit-message
> +			 (or (eq vc-command-messages 'log)
> +			     (eq (selected-window) (active-minibuffer-window)))))
>  		    (message "Running in background: %s" full-command)))
>                  ;; Get rid of the default message insertion, in case we don't
>                  ;; set a sentinel explicitly.
> @@ -345,11 +351,15 @@ vc-do-command
>  		(when vc-command-messages
>  		  (vc-run-delayed
>  		    (let ((message-truncate-lines t)
> -			  (inhibit-message (eq (selected-window) (active-minibuffer-window))))
> +			  (inhibit-message
> +			   (or (eq vc-command-messages 'log)
> +			       (eq (selected-window) (active-minibuffer-window)))))
>  		      (message "Done in background: %s" full-command)))))
>  	    ;; Run synchronously
>  	    (when vc-command-messages
> -	      (let ((inhibit-message (eq (selected-window) (active-minibuffer-window))))
> +	      (let ((inhibit-message
> +		     (or (eq vc-command-messages 'log)
> +			 (eq (selected-window) (active-minibuffer-window)))))
>  		(message "Running in foreground: %s" full-command)))
>  	    (let ((buffer-undo-list t))
>  	      (setq status (apply #'process-file command nil t nil squeezed)))
> @@ -364,7 +374,9 @@ vc-do-command
>  		     (if (integerp status) (format "status %d" status) status)
>  		     full-command))
>  	    (when vc-command-messages
> -	      (let ((inhibit-message (eq (selected-window) (active-minibuffer-window))))
> +	      (let ((inhibit-message
> +		     (or (eq vc-command-messages 'log)
> +			 (eq (selected-window) (active-minibuffer-window)))))

Should these be refactored into a function of their own?  It seems
a tad repetitive as is.