Subject: bug#67835: closed (Re: bug#67835: 30.0.50; Error with undocumented disabled commands)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 16 Dec 2023 19:38:02 +0000

Your bug report

#67835: 30.0.50; Error with undocumented disabled commands

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
67835: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67835
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#67835: 30.0.50; Error with undocumented disabled commands
From: Stefan Kangas <[email-masked]>
To: Eli Zaretskii <[email-masked]>, [email-masked]
Cc: [email-masked]
Date: Sat, 16 Dec 2023 11:37:13 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 29.2

Eli Zaretskii <[email-masked]> writes:

>> Date: Fri, 15 Dec 2023 19:45:13 +0900
>> From: [email-masked]
>>
>> 1. emacs -Q --eval "(progn (defun foo () (interactive)) (put 'foo 'disabled t))"
>> 2. M-x foo RET
>>
>> Then, I encountered the error message "Wrong type argument:
>> char-or-string-p, nil". This behavior is different from that in
>> previous versions, like 27.1, where I received the following message.
>>
>> | You have invoked the disabled command foo.
>> | It is disabled because new users often find it confusing.
>> | Here’s the first part of its description:
>> |
>> |    << not documented >>
>> | ...
>>
>> I also expect similar behavior in 30.0.50.
>>
>> In 30.0.50, it appears that disabled-command-function in
>> novice.el triggers this error by executing (insert nil) for
>> undocumented commands in the following code.
>>
>> | (insert (condition-case ()
>> |             (documentation cmd)
>> |           (error "<< not documented >>")))
>>
>> Although omitting a docstring is generally considered poor practice,
>> triggering an error for such commands might not be intentional
>> behavior. The corresponding code in 27.1 was as follows:
>>
>> | (... (or (condition-case ()
>> |               (documentation cmd)
>> |            (error nil))
>> |          "<< not documented >>"))

Thanks for the bug report!

This should now be fixed on emacs-29.

Subject: 30.0.50; Error with undocumented disabled commands
From: [email-masked]
To: [email-masked]
Date: Fri, 15 Dec 2023 19:45:13 +0900
List-Id: <debbugs-submit.debbugs.gnu.org>

1. emacs -Q --eval "(progn (defun foo () (interactive)) (put 'foo 'disabled t))"
2. M-x foo RET

Then, I encountered the error message "Wrong type argument:
char-or-string-p, nil". This behavior is different from that in
previous versions, like 27.1, where I received the following message.

| You have invoked the disabled command foo.
| It is disabled because new users often find it confusing.
| Here’s the first part of its description:
| 
|    << not documented >>
| ...

I also expect similar behavior in 30.0.50.

In 30.0.50, it appears that disabled-command-function in
novice.el triggers this error by executing (insert nil) for
undocumented commands in the following code.

| (insert (condition-case ()
|             (documentation cmd)
|           (error "<< not documented >>")))

Although omitting a docstring is generally considered poor practice,
triggering an error for such commands might not be intentional
behavior. The corresponding code in 27.1 was as follows:

| (... (or (condition-case ()
|               (documentation cmd)
|            (error nil))
|          "<< not documented >>"))

-- 
KH