Subject: Re: bug#65870: 30.0.50; Error in python-mode when try to delete a character in badly-indented code
From: Eli Zaretskii <[email-masked]>
To: kobarity <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sat, 08 Jun 2024 15:29:19 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> Date: Sun, 17 Sep 2023 00:06:58 +0900
> From: kobarity <[email-masked]>
> Cc: Daniel Lopez <[email-masked]>,
> 	[email-masked]
> 
> Eli Zaretskii wrote:
> > > Date: Mon, 11 Sep 2023 17:36:59 +0100
> > > From: Daniel Lopez <[email-masked]>
> > > 
> > > To reproduce from emacs -Q:
> > >   C-x b hello.py RET
> > >   M-x python-mode
> > >   On the first line, type the word "return", then press the Return key.
> > >   On the second line, type one or more spaces.
> > >   Press Backspace. This triggers the error message:
> > >       python-indent-line: Wrong type argument: wholenump, -4
> > >   and, the last-typed space is not deleted.
> > > 
> > > Backtrace of the error:
> > >   Debugger entered--Lisp error: (wrong-type-argument wholenump -4)
> > >     indent-line-to(-4)
> > >     python-indent-line(t)
> > >     python-indent-dedent-line()
> > >     python-indent-dedent-line-backspace(1)
> > >     funcall-interactively(python-indent-dedent-line-backspace 1)
> > >     command-execute(python-indent-dedent-line-backspace)
> > > 
> > > This can also happen with Python keywords/statements that tend to end a
> > > scope, eg. "break" or "raise", as well as "return".
> > > 
> > > I guess the smart dedenting sees the "return" (or similar statement) at
> > > top-level scope and then tries to move the cursor to a parent scope /
> > > negative column that doesn't exist. Perhaps one of those indent
> > > functions could clamp itself somehow to not do that but I'm not sure
> > > where the best place for that would be.
> > 
> > Thanks.
> > 
> > kobarity, any suggestions or comments?
> 
> Thank you for the report.  The attached is the proposed fix.

Thanks, installed on the master branch, and closing the bug.