Subject: bug#24157: 25.1.50; (princ "..." t) does not go to stderr in batch mode

From: Eli Zaretskii <[email-masked]>
Date: Fri, 05 Aug 2016 09:03:09 +0300

tags 24157 + notabug
thanks

> From: Clément Pit--Claudel <[email-masked]>
> Date: Fri, 5 Aug 2016 01:29:15 -0400
> 
> Contrast this:
> 
>   $ emacs --batch --eval '(message "to stderr.")' > /dev/null
>   to stderr.
> 
> With that (it produces no output):
> 
>   $ emacs --batch --eval '(princ "to stderr?" t)' > /dev/null
> 
> And yet according to the docs:
> 
>   Any Lisp program output that would normally go to the echo area,
>   either using message, or using prin1, etc., with t as the stream, goes
>   instead to Emacs’s standard error descriptor when in batch mode.
>   -- https://www.gnu.org/software/emacs/manual/html_node/elisp/Batch-Mode.html
> 
> What am I doing wrong?

You are reading stale documentation.  The current (25.1RC1) manual
says this instead:

     Any Lisp program output that would normally go to the echo area,
  either using ‘message’, or using ‘prin1’, etc., with ‘t’ as the stream,
  goes instead to Emacs’s standard descriptors when in batch mode:
  ‘message’ writes to the standard error descriptor, while ‘prin1’ and
  other print functions write to the standard output.

OK to close this bug?