Subject: bug#75784: Typo "unreadeable" in print.c; was exposed to Lisp

From: Stefan Kangas <[email-masked]>
Date: Fri, 24 Jan 2025 06:47:40 -0600

Pip Cet via "Bug reports for GNU Emacs, the Swiss army knife of text
editors" <[email-masked]> writes:

> print.c contains the following code:
>
> static void
> print_create_variable_mapping (void)
> {
>   Lisp_Object total[] = {
>     list3 (intern ("length"), intern ("print-length"), Qnil),
>     list3 (intern ("level"), intern ("print-level"), Qnil),
>     list3 (intern ("circle"), intern ("print-circle"), Qnil),
>     list3 (intern ("quoted"), intern ("print-quoted"), Qt),
>     list3 (intern ("escape-newlines"), intern ("print-escape-newlines"), Qnil),
>     list3 (intern ("escape-control-characters"),
> 	   intern ("print-escape-control-characters"), Qnil),
>     list3 (intern ("escape-nonascii"), intern ("print-escape-nonascii"), Qnil),
>     list3 (intern ("escape-multibyte"),
> 	   intern ("print-escape-multibyte"), Qnil),
>     list3 (intern ("charset-text-property"),
> 	   intern ("print-charset-text-property"), Qnil),
>     list3 (intern ("unreadeable-function"),
> 	   intern ("print-unreadable-function"), Qnil),
>     list3 (intern ("gensym"), intern ("print-gensym"), Qnil),
>     list3 (intern ("continuous-numbering"),
> 	   intern ("print-continuous-numbering"), Qnil),
>     list3 (intern ("number-table"), intern ("print-number-table"), Qnil),
>     list3 (intern ("float-format"), intern ("float-output-format"), Qnil),
>     list3 (intern ("integers-as-characters"),
> 	   intern ("print-integers-as-characters"), Qnil),
>   };
>
>   Vprint_variable_mapping = CALLMANY (Flist, total);
> }
>
> Unfortunately, "unreadable" is spelled in two different ways: the first
> instance is "unreadeable-function", with an "e", the second is
> "print-unreadable-function", without the "e".
>
> I think this was a simple typo at one point, but it was exposed as part
> of the Lisp API and people may have used it.  OTOH, it wasn't introduced
> too long ago, so we might want to fix it and see whether anyone
> complains.
>
> The documentation also needs to be updated, either to change it to the
> correct spelling or to mention the typo so Lisp hackers know this is
> another kdb-macro-redisplay.

Thanks for catching this typo.

I think we will have to support both spellings, at least for a while.
Do we have a way to add an obsoletion warning to both names?

Would you like to suggest a patch?