Subject: Re: bug#18133: Suppressing asynchronous command output

From: Eli Zaretskii <[email-masked]>
Date: Wed, 28 Dec 2016 18:01:21 +0200

> From: Reuben Thomas <[email-masked]>
> Date: Tue, 27 Dec 2016 22:21:11 +0000
> Cc: Juri Linkov <[email-masked]>, martin rudalics <[email-masked]>, [email-masked]
> 
>  > Why are we hard-coding a certain buffer name in a function that is
>  > supposed to be more general, judging by its name and doc string?
>  >
>  > ​I found it hard-coded several times in other places, so I hard-coded it here. What do you suggest?
> 
>  I don't see it hard-coded in any context such as this.
> 
> ​I'm not quite sure what you mean by "in any context such as this". I see the string repeated in source code,
> and never assigned to a variable name. This seems OK, since strings and symbols are pretty much
> interchangeable when of this sort (e.g. not internationalised).​

It appears:

  . in ibuf-ext.el, as one of several strings users can select
  . in tramp-adb.el as a buffer where the shell output should go
  . in tramp.el, likewise
  . in simple.el, likewise
  . in comments in some other files

By contrast, you were hard-coding it in a function that should provide
optional behavior for buffers that are not necessarily related to
shell output.  In that context, I think the user should be able to
instruct Emacs about the buffers which should exhibit this behavior.

>  I think the regexp against which buffer names are matched in
>  comint-make-newly-written-buffer-visible should be customizable, with
>  "*Async Shell Command*" being (in) the default value.
> 
> This is already the case.​

Maybe, but in that case I'm missing something here.

>  And another question: where's the user option to turn this feature on
>  or off (including the default being off)?
> 
> ​M-x​ customize-variable RET display-buffer-alist RET
> 
> You can tick/untick the option for "*Async Shell Command*", and, when it is ticked, the regexp can be edited.

But if I select that, what I get is that the buffer will not be
displayed at all, right?  What will trigger its display when it
becomes non-empty?  Sorry if I'm missing something obvious.