Subject: bug#30405: 26.0.91; Incorrect apostrophe translation in ImageMagick error message

From: Eli Zaretskii <[email-masked]>
Date: Mon, 12 Feb 2018 20:21:21 +0200

> Cc: [email-masked], [email-masked], [email-masked]
> From: Paul Eggert <[email-masked]>
> Date: Sun, 11 Feb 2018 12:36:47 -0800
> 
> >    emacs -Q
> >    M-x set-variable RET unibyte-display-via-language-environment RET t RET
> >    M-: (set-buffer-multibyte nil) RET
> >    C-q 0242 SPC
> > 
> > This should display ¢.
> > 
> > So I think we can get rid of making echo-area buffers unibyte, as long
> > as we make sure that variable is nil (which it is by default).
> 
> Getting rid of it sounds good, but why do we need to worry about 
> unibyte-display-via-language-environment?

Because with your patch the following doesn't work as it did before:

  emacs -Q
  M-x set-variable RET unibyte-display-via-language-environment RET t RET
  M-: (set-buffer-multibyte nil) RET
  (defun foo ()
    (interactive)
    (message "cannot ¢")) C-j
  M-x foo RET

(To insert ¢, type "C-q 0242".)  And the same if you replace 'message'
with 'error'.  With your patch, I see an octal escape, not ¢, i.e. the
effect of unibyte-display-via-language-environment is lost.

> And yet this patch works without worrying about 
> unibyte-display-via-language-environment, even if I run Emacs in a unibyte 
> locale like en_US.iso885915 (a practice that's no longer common).

Whether the locale is unibyte or not is immaterial, because we use
multibyte representation for Latin-N characters as well.  What is
important is to be in a unibyte buffer and display a message with
non-ASCII bytes, while unibyte-display-via-language-environment is
non-nil.