Subject: Re: bug#20754: checkdoc-current-buffer prints to stdout?!

From: Sebastian Wiesner <[email-masked]>
Date: Sun, 7 Jun 2015 17:29:00 +0200

2015-06-07 16:23 GMT+02:00 Oleh Krehel <[email-masked]>:

> Sebastian Wiesner <[email-masked]> writes:
>
> > while debugging unit test failures in Flycheck, I accidentally discovered
> > checkdoc-current-buffer apparently prints messages to standard output in
> > Emacs 25.1 in noninteractive mode.
> >
> > Would you please revert this change?
>
> No, this change doesn't need to be reverted. It's useful for running
> checkdoc in batch. And it does check for `noninteractive' before
> printing.

That is exactly _why_ I'd like to see this change reverted.  It introduces
output that is controlled by an entirely unrelated global variable.  YMMV,
but I don't think that this is good design at all.

> Would you please be more strict about updating
> > NEWS for breaking changes such as this?
>
> This isn't a breaking change.

It _did_ break Flycheck.

If you have any problem with checkdoc, the
> usual procedure is to:
>
>     git log --follow lisp/emacs-lisp/checkdoc.el

> or the equivalent "lf" in magit.
>

No offence meant, but why do you even bother with NEWS at all if that's
your general response to such issues?

> Actually, I'd think that it would be beneficial for flycheck to be able
> to run checkdoc in batch, since async can make things faster.

Flycheck has been successfully running checkdoc asynchronously in a
non-interactive batch session in batch since long before this change was
made.  This change didn't have any benefits at all for Flycheck, it only
made matters worse.

Why can't you just leave checkdoc-current-buffer as is, and introduce a new
entry point?

What works for ERT, can't be bad for checkdoc, and it means a lot less
trouble for anyone who's using checkdoc noninteractively, mostly because
they can explicitly opt in to this new behaviour instead of being forced
into it.