Subject: bug#29422: 27.0.50; Symbol enable-multibyte-characters may not be buffer-local

From: Eli Zaretskii <[email-masked]>
Date: Sun, 26 Nov 2017 17:31:36 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Sat, 25 Nov 2017 21:07:22 -0500
> 
> >> > Yes, but signaling "Setting constant" when we actually mean a
> >> > read-only symbol is sub-optimal, IMO.
> >> That's the error that we've been using for (setq
> >> enable-multibyte-characters ...) since Emacs-21.
> 
> > ??? The code you changed signaled a "Symbol %s may not be
> > buffer-local" error, not "Setting constant".  What am I missing?
> 
> My patch did not touch `setq`.  It just made `make-local-variable` and
> `make-buffer-local-variable` signal the same error as `setq`.

Which IMO is confusing because the doc string of
enable-multibyte-characters says

  Automatically becomes permanently buffer-local when set.

> > we should at least change the ELisp manual, as it now contradicts
> > the code.
> 
> If you mean the doc of `setq`, then I guess this discrepancy has been
> with us since Emacs-21.

Actually, Emacs 21 said something more reasonable:

  Variable enable-multibyte-characters is read-only

which was different from the error signaled when trying to change the
value of, say, t.  Only Emacs 22.1 tossed the difference and started
to signal the same error for both.