Subject: Re: bug#72759: 31.0.50; Emacs hangs with open-paren-in-column-0-is-defun-start set to nil

From: Eshel Yaron <[email-masked]>
Date: Thu, 22 Aug 2024 19:08:23 +0200

Eli Zaretskii <[email-masked]> writes:

>> From: Eshel Yaron <[email-masked]>
>> Cc: [email-masked]
>> Date: Thu, 22 Aug 2024 17:49:22 +0200
>> 
>> After taking another look, ISTM that the problem is that checkdoc
>> assumes that beginning-of-defun either advances point or returns nil,
>> but since beginning-of-defun unconditionally moves to the beginning of
>> the line, it can in fact find a defun ahead of point (and thus return
>> non-nil) but then move back to the beginning of the line, so point is
>> unchanged.  So the assumption in checkdoc doesn't always hold when
>> open-paren-in-column-0-is-defun-start is nil.  This assumption should
>> still hold, however, for beginning-of-defun-raw, which doesn't go back
>> to the beginning of the line.
>> 
>> This suggests the following change, which indeed seems to fix the hang:
>> 
>> 
>> diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el
>> index 949ca6b74ad..65226d8ee44 100644
>> --- a/lisp/emacs-lisp/checkdoc.el
>> +++ b/lisp/emacs-lisp/checkdoc.el
>> @@ -981,7 +981,7 @@ checkdoc-next-docstring
>>  Return nil if there are no more doc strings."
>>    (let (found)
>>      (while (and (not (setq found (checkdoc--next-docstring)))
>> -                (beginning-of-defun -1)))
>> +                (beginning-of-defun-raw -1)))
>>      found))
>
> But the doc string of beginning-of-defun-raw says, inter alia:
>
>   This is identical to function `beginning-of-defun', except that point
>   does not move to the beginning of the line when `defun-prompt-regexp'
>   is non-nil.                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
>   ^^^^^^^^^^
>
> Does that mean defun-prompt-regexp was non-nil in your case?  The
> default is nil.

No, defun-prompt-regexp was (and is) the default, nil.