Package: emacs;
Reported by: Eduardo Ochs <eduardoochs <at> gmail.com>
Date: Tue, 12 Feb 2013 01:42:02 UTC
Severity: normal
Found in version 24.3.50
Done: Stefan Kangas <stefan <at> marxist.se>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Eduardo Ochs <eduardoochs <at> gmail.com> To: Stefan Kangas <stefan <at> marxist.se> Cc: Andreas Schwab <schwab <at> linux-m68k.org>, 13691 <at> debbugs.gnu.org Subject: bug#13691: 24.3.50; Problem with glyphs in unibyte buffers Date: Mon, 31 Aug 2020 01:49:38 -0300
It seems that the bug is solved in Emacs26. I don't have Emacs27 or git Emacs in this machine, but I will compile them tomorrow and check. The shell script that I used to do the test is below (for the sake of completeness). It creates two very similar files that only differ in their "coding:" lines and then opens them with "emacs26 -Q". After opening each of them you will have to run `M-x eval-buffer' and then do a `C-x C-e' after the `(insert ...)' line close to the end. Just a curiosity... is there a standard(-ish) way to send a script like this to a shell buffer? I use eev all the time and in eev this is trivial - see: http://angg.twu.net/eev-intros/find-eepitch-intro.html#1 but sometimes I need to send scripts and tests like this to people that don't use eev... Cheers, thanks, etc, Eduardo Ochs http://angg.twu.net/emacsconf2019.html Here is the script... cd /tmp/ rm -fv /tmp/glyph-bug* cat > glyph-bug-raw-text <<'%%%%%%%%' (defun eepitch-set-glyph (pos &optional char face) (aset standard-display-table pos (if char (vector (make-glyph-code char face))))) (defun eepitch-set-glyph-8bit (pos &optional char face) (aset standard-display-table (make-char 'eight-bit pos) (if char (vector (make-glyph-code char face))))) (if (not standard-display-table) (setq standard-display-table (make-display-table)) ) (defface eev-glyph-face-green '((t :foreground "green")) "") (eepitch-set-glyph 171 171 'eev-glyph-face-green) (eepitch-set-glyph-8bit 171 171 'eev-glyph-face-green) (eepitch-set-glyph 187 187 'eev-glyph-face-green) (eepitch-set-glyph-8bit 187 187 'eev-glyph-face-green) (defface eev-glyph-face-math '((t :foreground "RoyalBlue2" :background "gray20")) "") (eepitch-set-glyph 191 8711 'eev-glyph-face-math) (eepitch-set-glyph-8bit 191 8711 'eev-glyph-face-math) ;; After doing an M-x eval-buffer, ;; run these tests "by hand" with C-x C-e: ;; (emacs-version) ;; (make-char 'eight-bit 191) ;; (insert "\n;; " 171 187 191) ;; Local Variables: ;; coding: raw-text-unix ;; mode: emacs-lisp ;; End: %%%%%%%% cat > glyph-bug-utf-8 <<'%%%%%%%%' (defun eepitch-set-glyph (pos &optional char face) (aset standard-display-table pos (if char (vector (make-glyph-code char face))))) (defun eepitch-set-glyph-8bit (pos &optional char face) (aset standard-display-table (make-char 'eight-bit pos) (if char (vector (make-glyph-code char face))))) (if (not standard-display-table) (setq standard-display-table (make-display-table)) ) (defface eev-glyph-face-green '((t :foreground "green")) "") (eepitch-set-glyph 171 171 'eev-glyph-face-green) (eepitch-set-glyph-8bit 171 171 'eev-glyph-face-green) (eepitch-set-glyph 187 187 'eev-glyph-face-green) (eepitch-set-glyph-8bit 187 187 'eev-glyph-face-green) (defface eev-glyph-face-math '((t :foreground "RoyalBlue2" :background "gray20")) "") (eepitch-set-glyph 191 8711 'eev-glyph-face-math) (eepitch-set-glyph-8bit 191 8711 'eev-glyph-face-math) ;; After doing an M-x eval-buffer, ;; run these tests "by hand" with C-x C-e: ;; (emacs-version) ;; (make-char 'eight-bit 191) ;; (insert "\n;; " 171 187 191) ;; Local Variables: ;; coding: utf-8-unix ;; mode: emacs-lisp ;; End: %%%%%%%% ~/bigsrc/emacs26/src/emacs -Q -bg black -fg bisque /tmp/glyph-bug-raw-text ~/bigsrc/emacs26/src/emacs -Q -bg black -fg bisque /tmp/glyph-bug-utf-8 /usr/bin/emacs -Q -bg black -fg bisque /tmp/glyph-bug-raw-text /usr/bin/emacs -Q -bg black -fg bisque /tmp/glyph-bug-utf-8 On Sun, 30 Aug 2020 at 23:32, Stefan Kangas <stefan <at> marxist.se> wrote: > > Hi Eduardo, > > You sent the below description to the Emacs bug list 7 years ago. > > The email you sent is quite long, and I'm not sure what exactly the > issue is, or how to try to reproduce it. > > Can you reproduce the issue on a recent version of Emacs, such as the > recently released version 27.1? > > If yes, could you please provide a minimal step-by-step recipe for > reproducing it, starting from "emacs -Q"? > > If I don't hear back from you within a couple of weeks, I'll just > close this bug as unreproducible. > > Thanks in advance. > > Best regards, > Stefan Kangas > > Eduardo Ochs <eduardoochs <at> gmail.com> writes: > > > Hi Andreas, > > > > On Tue, Feb 12, 2013 at 7:02 AM, Andreas Schwab <schwab <at> linux-m68k.org> wrote: > >> > >> Unibyte characters are in the eight-bit charset, so you need to set the > >> display of the corresponding character in that charset, eg. (make-char > >> 'eight-bit 171). > > > > Thanks, that worked! > > > > Now for something slightly trickier... =| > > > > Let's start by using several simple, low-level functions, one for > > each range... a smarter function with `cond's can be left for > > later. The code below makes the green guillemets work both in > > unibyte and multibyte buffers, > > > > (defun eepitch-set-glyph (pos &optional char face) > > (aset standard-display-table pos > > (if char (vector (make-glyph-code char face))))) > > > > (defun eepitch-set-glyph-8bit (pos &optional char face) > > (aset standard-display-table (make-char 'eight-bit pos) > > (if char (vector (make-glyph-code char face))))) > > > > (if (not standard-display-table) > > (setq standard-display-table (make-display-table)) > > ) > > > > (defface eev-glyph-face-green '((t :foreground "green")) "") > > (eepitch-set-glyph 171 171 'eev-glyph-face-green) > > (eepitch-set-glyph-8bit 171 171 'eev-glyph-face-green) > > (eepitch-set-glyph 187 187 'eev-glyph-face-green) > > (eepitch-set-glyph-8bit 187 187 'eev-glyph-face-green) > > > > but now suppose that we want the char 191 to be displayed as a > > blue nabla (unicode: 8711). Running > > > > (defface eev-glyph-face-math '((t :foreground "RoyalBlue2" > > :background "gray20")) "") > > (eepitch-set-glyph 191 8711 'eev-glyph-face-math) > > (eepitch-set-glyph-8bit 191 8711 'eev-glyph-face-math) > > > > _almost_ does the job, but look at the new screenshot - it seems > > that the `char' argument in `eepitch-set-glyph-8bit' needs some > > translation too... is that right? Which translation? > > > > Cheers, and thanks in advance again... > > Eduardo Ochs > > eduardoochs <at> gmail.com > > http://angg.twu.net/#eev
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.