Subject: Re: bug#21242: 24.5.1; python.el: should display output buffer on exceptions when using python-shell-send-region

From: Lars Ingebrigtsen <[email-masked]>
Date: Thu, 17 Sep 2020 20:01:20 +0200

Yuri D'Elia <[email-masked]> writes:

> When evaluating the code interactively, there's currently no
> notification about evaluation errors. Exceptions in the output buffer go
> simply unnoticed, unless you watch for them closely. I like to keep the
> output buffer buried, and assume that no-notification==no-error.
>
> Exceptions caused by interactive evaluation should either:
>
> - show a notification of sorts in the minibuffer
> - display the output buffer for inspection

I don't use this stuff a lot, but I just don't understand how the patch
attached relates to the reported problem.

And there's also Andreas's comment (at the end).

Yuri, could you explain a bit more about how this patch fixes the
problem?

> -         (toplevel-block-p (save-excursion
> -                             (goto-char start)
> -                             (or (zerop (line-number-at-pos start))
> -                                 (progn
> -                                   (python-util-forward-comment 1)
> -                                   (zerop (current-indentation)))))))
> +         (block-param (save-excursion
> +                        (goto-char start)
> +                        (progn
> +                          (python-util-forward-comment 1)
> +                          (list (current-indentation)
> +                                (/= (point) start)))))
> +         (block-indentation (car block-param))
> +         (starts-with-indentation-p (cadr block-param)))
>      (with-temp-buffer
>        (python-mode)
>        (if fillstr (insert fillstr))
> +      (when (and (> block-indentation 0) (not starts-with-indentation-p))
> +        (insert (make-string block-indentation ?\s)))
>        (insert substring)
>        (goto-char (point-min))
> -      (when (not toplevel-block-p)
> +      (when (> block-indentation 0)
>          (insert "if True:")
>          (delete-region (point) (line-end-position)))

Andreas Röhler <[email-masked]> writes:

>> Given previous experience with python-mode.el (which tends to break the
>> current window layout with his own splitting logic), I find it important
>> that the notification function (which displays the output buffer) should
>> be customizable, and this is reflected in the example code.
>
> WRT python-mode.el:
>
> Splitting-behavior _is_ customizable. It only occurs if
> py-split-window-on-execute is non-nil - default is 'just-two.
> Also there is py-keep-windows-configuration, when non-nil it precedes
> other settings.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no