all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Stefan Kangas <stefan@marxist.se>
Cc: 38927-done@debbugs.gnu.org, Paul Pogonyshev <pogonyshev@gmail.com>
Subject: bug#38927: [patch] Backtrace printing in non-interactive mode doesn't use cl-prin1 etc.
Date: Sat, 29 Feb 2020 09:07:08 -0500	[thread overview]
Message-ID: <jwvblph7aln.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <87fteu6kz4.fsf@stefankangas.se> (Stefan Kangas's message of "Sat, 29 Feb 2020 06:06:23 +0100")

> Do you have any comments on the below patch?  It seems to relate to a
> commit of yours, but has unfortunately not received any reply yet.

Hmm... looks like the bug tracker was kept out of the discussion.
This has been fixed already by 0223a1577c8999b8ea5eb35f39bc68360cbf5221


        Stefan


> Paul Pogonyshev <pogonyshev@gmail.com> writes:
>
>> tags
>>
>> Backtrace printing in batch mode ignores all customizations, at least:
>> - all `cl-print-object' overrides (`debugger-print-function');
>> - `print-level', `print-length' and friends;
>> - `debugger-batch-max-lines'.
>>
>> The reason is this commit:
>>
>> 7228488effa78dcb75284cb6d247b24804e0e7f5
>> Author:     Stefan Monnier <monnier@iro.umontreal.ca>
>> AuthorDate: 2018-04-02 00:23:20 -0400
>> [...]
>>
>> * lisp/emacs-lisp/debug.el (debug): Don't hang upon error in initial-frame.
>>
>> [...]
>> +   ((and (eq t (framep (selected-frame)))
>> +         (equal "initial_terminal" (terminal-name)))
>> +    ;; We're in the initial-frame (where `message' just outputs to stdout) so
>> +    ;; there's no tty or GUI frame to display the backtrace and interact with
>> +    ;; it: just dump a backtrace to stdout.
>> +    ;; This happens for example while handling an error in code from
>> +    ;; early-init.el with --debug-init.
>> +    (message "Error: %S" args)
>> [...]
>>
>> The commit added a "failsafe" mode for (quoting) "initial-frame (where
>> `message' just outputs to stdout) so there's no tty or GUI frame".
>> This failsafe mode is also erroneously triggered in batch mode. It was
>> never meant for it: you can see a couple of uses of `noninteractive'
>> in the next `cond' branch, but execution now never gets to it.
>>
>> Patch attached:
>> - don't use this "failsafe" mode when running non-interactively;
>> - repair for the latest changes in backtrace generation (apparently,
>> before the buffer was not read-only);
>> - repair adjustment for `debugger-batch-max-lines' which didn't make
>> any sense and didn't achieve what it claimed in the comment.
>>
>> Paul
>>
>> From 180f4a4f771696512af31ded93057713a5507147 Mon Sep 17 00:00:00 2001
>> From: Paul Pogonyshev <pogonyshev@gmail.com>
>> Date: Sat, 4 Jan 2020 22:47:24 +0100
>> Subject: [PATCH] Don't apply the special case to non-interactive mode in
>>  `debug'
>>
>> ---
>>  lisp/emacs-lisp/debug.el | 25 +++++++++++++------------
>>  1 file changed, 13 insertions(+), 12 deletions(-)
>>
>> diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
>> index 3df0ba4a65..b6c58b8c7b 100644
>> --- a/lisp/emacs-lisp/debug.el
>> +++ b/lisp/emacs-lisp/debug.el
>> @@ -172,7 +172,8 @@ debug
>>     (inhibit-redisplay
>>      ;; Don't really try to enter debugger within an eval from redisplay.
>>      debugger-value)
>> -   ((and (eq t (framep (selected-frame)))
>> +   ((and (not noninteractive)
>> +         (eq t (framep (selected-frame)))
>>           (equal "initial_terminal" (terminal-name)))
>>      ;; We're in the initial-frame (where `message' just outputs to stdout) so
>>      ;; there's no tty or GUI frame to display the backtrace and interact with
>> @@ -246,17 +247,17 @@ debug
>>  	        (when noninteractive
>>  		  ;; If the backtrace is long, save the beginning
>>  		  ;; and the end, but discard the middle.
>> -		  (when (> (count-lines (point-min) (point-max))
>> -			   debugger-batch-max-lines)
>> -		    (goto-char (point-min))
>> -		    (forward-line (/ 2 debugger-batch-max-lines))
>> -		    (let ((middlestart (point)))
>> -		      (goto-char (point-max))
>> -		      (forward-line (- (/ 2 debugger-batch-max-lines)
>> -				       debugger-batch-max-lines))
>> -		      (delete-region middlestart (point)))
>> -		    (insert "...\n"))
>> -		  (goto-char (point-min))
>> +                  (let ((inhibit-read-only t))
>> +		    (when (> (count-lines (point-min) (point-max))
>> +			     debugger-batch-max-lines)
>> +		      (goto-char (point-min))
>> +		      (forward-line (/ debugger-batch-max-lines 4))
>> +		      (let ((middlestart (point)))
>> +		        (goto-char (point-max))
>> +		        (forward-line (- (/ 2 debugger-batch-max-lines)
>> +				         debugger-batch-max-lines))
>> +		        (delete-region middlestart (point)))
>> +		      (insert "...\n")))
>>  		  (message "%s" (buffer-string))
>>  		  (kill-emacs -1)))
>>  	      (pop-to-buffer






      reply	other threads:[~2020-02-29 14:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-04 22:01 bug#38927: [patch] Backtrace printing in non-interactive mode doesn't use cl-prin1 etc Paul Pogonyshev
2020-02-29  5:06 ` Stefan Kangas
2020-02-29 14:07   ` Stefan Monnier [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwvblph7aln.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=38927-done@debbugs.gnu.org \
    --cc=pogonyshev@gmail.com \
    --cc=stefan@marxist.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.