From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 08 00:32:20 2025 Received: (at submit) by debbugs.gnu.org; 8 Apr 2025 04:32:20 +0000 Received: from localhost ([127.0.0.1]:58146 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u20dG-0003NZ-Dx for submit@debbugs.gnu.org; Tue, 08 Apr 2025 00:32:20 -0400 Received: from lists.gnu.org ([2001:470:142::17]:59146) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u20dD-0003N3-3u for submit@debbugs.gnu.org; Tue, 08 Apr 2025 00:32:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u20d6-0006U3-GC for bug-gnu-emacs@gnu.org; Tue, 08 Apr 2025 00:32:08 -0400 Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u20d3-0005cq-7o for bug-gnu-emacs@gnu.org; Tue, 08 Apr 2025 00:32:08 -0400 Received: by mail-pl1-x641.google.com with SMTP id d9443c01a7336-22548a28d0cso70774355ad.3 for ; Mon, 07 Apr 2025 21:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744086723; x=1744691523; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:user-agent :subject:to:from:from:to:cc:subject:date:message-id:reply-to; bh=s8CafQLtrJFiBmjDZ/QXpv9dBZPNCzwLYvVoGWTeoNM=; b=AJat3kJ22Uu16HCigXAnqDTovWqyrYmBNyFhA1+rl+13pye/JwvI1EHVm1VQgyii45 URLIQuQoiv6N62J1LiYg0gNwhPlZ4I1HKsxhTGMXkXe/sIo/Zncs6KtOQtvBxQmCwkp0 v5IzVqiH8p3BiaavF/ihNKGlFa/G/NEWL3Hwp9mhTU9SUT7BYuoUqJ7GKHpgRLZiSK3R wpdCNmBV9G0Pk4RtB6QqlhYSxZowARWJKNEZZ/OWeZLCgMwH5ImC1V6HUesqjCZXwstW BYtuD7ZgyW5SEKhjrxkyHf3uG7C+q6SQ3cj9J0ineCfY8gHbhiuu1TIIk494lfj24pk8 HmZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744086723; x=1744691523; h=content-transfer-encoding:mime-version:message-id:date:user-agent :subject:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=s8CafQLtrJFiBmjDZ/QXpv9dBZPNCzwLYvVoGWTeoNM=; b=Uwhx4aEi8BPo8YaVrfE6HvNmb3oKRDAA9wFIL1A0NrfyTlRRJnvXPSpatMrq0lPhYU U7q965emEI+lBb74bfdR/LX28mnb5bwaJd6AN0KoFN9S3Y8lE89tdy8eb265SZ2zj9uG W4DVmiBlDpih74W9b+GOGRQSB9vY4m08y3r1cm+/io29KexGe8AwyO6olr2GbaA+TsnW 0FWbbJ9IGlfcM/kAzEUzkJg4TJR8RyXqo2IVGoPlXAqp7JymrneP1NRYMglHilO1UD+8 ycuGJzPmGlHLeIGJLDwwZlKx6EhZfUlqGzQ0aGRywgbuWzQtkauG7dyIlh7Hsesn+795 r/XA== X-Gm-Message-State: AOJu0YzqRpF9ZBMUJpONrqaPl8UZ35qXeRPGpxNT60ON0lAlKoOAIB9S MkhnmsKFlpDpR9P4nQGjk4fSJWeYu7v13O+m6K8UMqgOVBnK1wkrQQGtaCnp X-Gm-Gg: ASbGncsWbNb/SC85j2eUhoGtgTCVuTw0TdU7TSE/xkw+bpXYjPb4lWRG22TlPZnt/9v gVGTJ9T4qpuqikT7ei6bQpivcZB7cq/Q6oLkccNAmN2W9q/2bsNZfXnU/6uUyxmZu0MwSpGX4F6 zmcs90hYBOjOf83rBU2MzUWhMp7WgdHHDxwWsqwG8wDl4QuGNnhHEvuWbufNyTRUFCsjN8ZOhMr rT+6V7Go6b0MVAzMxu98RMx3Zn4piIejh22vyurodqN93DvgAIvXd5cla/LSruXLU96aql644Tv 30Luujfi16coeq7U6L66aDEXN4Hmj6ogEFbW/8vOvw== X-Google-Smtp-Source: AGHT+IEWJgV9927kIStgQpQmrwfFrX8+Riq00cgXR7YSBEm1V0wuK5Bvhok0eB9yizuMTWMidNy+mg== X-Received: by 2002:a17:902:fc8d:b0:224:76f:9e45 with SMTP id d9443c01a7336-22a8a860bddmr214217055ad.21.1744086722780; Mon, 07 Apr 2025 21:32:02 -0700 (PDT) Received: from localhost ([115.240.90.130]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-2297866e693sm90113215ad.185.2025.04.07.21.31.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 21:32:02 -0700 (PDT) From: Visuwesh To: bug-gnu-emacs@gnu.org Subject: 31.0.50; prettify-symbols-mode fails when replacement CHARACTER is a composition rule User-Agent: Gnus/5.13 (Gnus v5.13) X-Debbugs-Cc: Date: Tue, 08 Apr 2025 10:01:30 +0530 Message-ID: <8734ejff4t.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2607:f8b0:4864:20::641; envelope-from=visuweshm@gmail.com; helo=mail-pl1-x641.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) As per the docstring of prettify-symbols-alist, the replacement for any SYMBOL can be: Each element looks like (SYMBOL . CHARACTER), where the symbol matching SYMBOL (a string, not a regexp) will be shown as CHARACTER instead. where CHARACTER being list or vector implies that it is a composition rule. However, prettify-symbols--composition-displayable-p fails because it assumes CHARACTER is always a character (i.e., integer). To reproduce, 1. emacs -Q 2. M-: (setq prettify-symbols-alist '(("\\left\\{" . (?=E2=8E=A8 (tc . = Bc) ?=E2=8E=A7 (Bc . tc) ?=E2=8E=A9)))) RET 3. M-x toggle-debug-on-error RET 4. M-x prettify-symbols-mode RET 5. Witness the backtrace. Here's the backtrace: Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p (tc = . Bc)) #f(compiled-function (idx-elt) #)(((tc . Bc)= . 1)) #f(compiled-function (elt) #)(((tc . Bc) . = 1)) mapc(#f(compiled-function (elt) #) ((9128 .= 0) ((tc . Bc) . 1) (9127 . 2) ((Bc . tc) . 3) (9129 . 4))) seq-do(#f(compiled-function (elt) #) ((9128= . 0) ((tc . Bc) . 1) (9127 . 2) ((Bc . tc) . 3) (9129 . 4))) seq-every-p(#f(compiled-function (idx-elt) #= ) ((9128 . 0) ((tc . Bc) . 1) (9127 . 2) ((Bc . tc) . 3) (9129 . 4))) prettify-symbols--composition-displayable-p((9128 (tc . Bc) 9127 (Bc . tc= ) 9129)) #f(compiled-function (elt) #)(("\\left\\{" 91= 28 (tc . Bc) 9127 (Bc . tc) 9129)) #f(compiled-function (elt) #)(("\\left\\{" 9= 128 (tc . Bc) 9127 (Bc . tc) 9129)) mapcar(#f(compiled-function (elt) #) (("\\le= ft\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129))) #f(compiled-function #'sequence #)(#f(compi= led-function (elt) #) (("\\left\\{" 9128 (tc .= Bc) 9127 (Bc . tc) 9129))) apply(#f(compiled-function #'sequence #) #f= (compiled-function (elt) #) (("\\left\\{" 9128= (tc . Bc) 9127 (Bc . tc) 9129)) nil) seq-map(#f(compiled-function (elt) #) (("\\l= eft\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129))) seq-filter(#f(compiled-function (elt) #) (("\= \left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129))) prettify-symbols--make-keywords() prettify-symbols-mode(toggle) funcall-interactively(prettify-symbols-mode toggle) call-interactively(prettify-symbols-mode record nil) command-execute(prettify-symbols-mode record) execute-extended-command(nil "prettify-symbols-mode" nil) funcall-interactively(execute-extended-command nil "prettify-symbols-mode= " nil) call-interactively(execute-extended-command nil nil) command-execute(execute-extended-command) In GNU Emacs 31.0.50 (build 45, x86_64-pc-linux-gnu, X toolkit, cairo version 1.18.4, Xaw scroll bars) of 2025-04-08 built on astatine Repository revision: 19257efbf712dc026572a88b46d456d0c4b8c365 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101015 System Description: Debian GNU/Linux trixie/sid Configured using: 'configure --with-sound=3Dalsa --with-x-toolkit=3Dlucid --without-xaw3d --without-gconf --without-libsystemd --with-cairo CFLAGS=3D-g3 CC=3D/usr/bin/gcc-13' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG LCMS2 LIBOTF LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM XRANDR LUCID ZLIB Important settings: value of $LC_MONETARY: ta_IN.UTF-8 value of $LC_NUMERIC: ta_IN.UTF-8 value of $LANG: en_GB.UTF-8 locale-coding-system: utf-8-unix Major mode: Org Minor modes in effect: recentf-mode: t org-cdlatex-mode: t server-mode: t eros-mode: t vz/org-abbrev-mode: t vz/org-prettify-mode: t pdf-occur-global-minor-mode: t minibuffer-depth-indicate-mode: t repeat-mode: t display-time-mode: t display-battery-mode: t delete-selection-mode: t xterm-mouse-mode: t vz/winkey-minor-mode: t straight-use-package-mode: t straight-package-neutering-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t prettify-symbols-mode: t use-hard-newlines: t tab-bar-history-mode: t tab-bar-mode: t file-name-shadow-mode: t context-menu-mode: t global-font-lock-mode: t font-lock-mode: t undelete-frame-mode: t minibuffer-regexp-mode: t auto-fill-function: org-auto-fill-function indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t abbrev-mode: t Load-path shadows: /home/viz/lib/emacs/straight/build/org/ob-awk hides /home/viz/lib/ports/ema= cs/lisp/org/ob-awk /home/viz/lib/emacs/straight/build/org/org-capture hides /home/viz/lib/port= s/emacs/lisp/org/org-capture /home/viz/lib/emacs/straight/build/org/ob-sql hides /home/viz/lib/ports/ema= cs/lisp/org/ob-sql /home/viz/lib/emacs/straight/build/org/ol-doi hides /home/viz/lib/ports/ema= cs/lisp/org/ol-doi /home/viz/lib/emacs/straight/build/org/org-plot hides /home/viz/lib/ports/e= macs/lisp/org/org-plot /home/viz/lib/emacs/straight/build/org/ob-dot hides /home/viz/lib/ports/ema= cs/lisp/org/ob-dot /home/viz/lib/emacs/straight/build/org/ol-eshell hides /home/viz/lib/ports/= emacs/lisp/org/ol-eshell /home/viz/lib/emacs/straight/build/org/ob-C hides /home/viz/lib/ports/emacs= /lisp/org/ob-C /home/viz/lib/emacs/straight/build/org/ob-ref hides /home/viz/lib/ports/ema= cs/lisp/org/ob-ref /home/viz/lib/emacs/straight/build/org/org-list hides /home/viz/lib/ports/e= macs/lisp/org/org-list /home/viz/lib/emacs/straight/build/org/org-mouse hides /home/viz/lib/ports/= emacs/lisp/org/org-mouse /home/viz/lib/emacs/straight/build/org/ob-haskell hides /home/viz/lib/ports= /emacs/lisp/org/ob-haskell /home/viz/lib/emacs/straight/build/org/ob-plantuml hides /home/viz/lib/port= s/emacs/lisp/org/ob-plantuml /home/viz/lib/emacs/straight/build/org/org-keys hides /home/viz/lib/ports/e= macs/lisp/org/org-keys /home/viz/lib/emacs/straight/build/org/org-clock hides /home/viz/lib/ports/= emacs/lisp/org/org-clock /home/viz/lib/emacs/straight/build/org/ox-html hides /home/viz/lib/ports/em= acs/lisp/org/ox-html /home/viz/lib/emacs/straight/build/org/oc-biblatex hides /home/viz/lib/port= s/emacs/lisp/org/oc-biblatex /home/viz/lib/emacs/straight/build/org/ob-table hides /home/viz/lib/ports/e= macs/lisp/org/ob-table /home/viz/lib/emacs/straight/build/org/ob hides /home/viz/lib/ports/emacs/l= isp/org/ob /home/viz/lib/emacs/straight/build/org/ol-w3m hides /home/viz/lib/ports/ema= cs/lisp/org/ol-w3m /home/viz/lib/emacs/straight/build/org/ob-groovy hides /home/viz/lib/ports/= emacs/lisp/org/ob-groovy /home/viz/lib/emacs/straight/build/org/org-footnote hides /home/viz/lib/por= ts/emacs/lisp/org/org-footnote /home/viz/lib/emacs/straight/build/org/org-entities hides /home/viz/lib/por= ts/emacs/lisp/org/org-entities /home/viz/lib/emacs/straight/build/org/ob-org hides /home/viz/lib/ports/ema= cs/lisp/org/ob-org /home/viz/lib/emacs/straight/build/org/org-macs hides /home/viz/lib/ports/e= macs/lisp/org/org-macs /home/viz/lib/emacs/straight/build/org/ob-shell hides /home/viz/lib/ports/e= macs/lisp/org/ob-shell /home/viz/lib/emacs/straight/build/org/ob-R hides /home/viz/lib/ports/emacs= /lisp/org/ob-R /home/viz/lib/emacs/straight/build/org/ob-lisp hides /home/viz/lib/ports/em= acs/lisp/org/ob-lisp /home/viz/lib/emacs/straight/build/org/ob-js hides /home/viz/lib/ports/emac= s/lisp/org/ob-js /home/viz/lib/emacs/straight/build/org/ob-maxima hides /home/viz/lib/ports/= emacs/lisp/org/ob-maxima /home/viz/lib/emacs/straight/build/org/org-element-ast hides /home/viz/lib/= ports/emacs/lisp/org/org-element-ast /home/viz/lib/emacs/straight/build/org/ox-ascii hides /home/viz/lib/ports/e= macs/lisp/org/ox-ascii /home/viz/lib/emacs/straight/build/org/org-persist hides /home/viz/lib/port= s/emacs/lisp/org/org-persist /home/viz/lib/emacs/straight/build/org/ox-md hides /home/viz/lib/ports/emac= s/lisp/org/ox-md /home/viz/lib/emacs/straight/build/org/org-duration hides /home/viz/lib/por= ts/emacs/lisp/org/org-duration /home/viz/lib/emacs/straight/build/org/ob-lilypond hides /home/viz/lib/port= s/emacs/lisp/org/ob-lilypond /home/viz/lib/emacs/straight/build/org/ob-ruby hides /home/viz/lib/ports/em= acs/lisp/org/ob-ruby /home/viz/lib/emacs/straight/build/org/ob-core hides /home/viz/lib/ports/em= acs/lisp/org/ob-core /home/viz/lib/emacs/straight/build/org/ol-mhe hides /home/viz/lib/ports/ema= cs/lisp/org/ol-mhe /home/viz/lib/emacs/straight/build/org/ob-ditaa hides /home/viz/lib/ports/e= macs/lisp/org/ob-ditaa /home/viz/lib/emacs/straight/build/org/ol-irc hides /home/viz/lib/ports/ema= cs/lisp/org/ol-irc /home/viz/lib/emacs/straight/build/org/ob-fortran hides /home/viz/lib/ports= /emacs/lisp/org/ob-fortran /home/viz/lib/emacs/straight/build/org/org-feed hides /home/viz/lib/ports/e= macs/lisp/org/org-feed /home/viz/lib/emacs/straight/build/org/ob-java hides /home/viz/lib/ports/em= acs/lisp/org/ob-java /home/viz/lib/emacs/straight/build/org/ox hides /home/viz/lib/ports/emacs/l= isp/org/ox /home/viz/lib/emacs/straight/build/org/oc-csl hides /home/viz/lib/ports/ema= cs/lisp/org/oc-csl /home/viz/lib/emacs/straight/build/org/ob-exp hides /home/viz/lib/ports/ema= cs/lisp/org/ob-exp /home/viz/lib/emacs/straight/build/org/org-loaddefs hides /home/viz/lib/por= ts/emacs/lisp/org/org-loaddefs /home/viz/lib/emacs/straight/build/org/ob-scheme hides /home/viz/lib/ports/= emacs/lisp/org/ob-scheme /home/viz/lib/emacs/straight/build/org/ob-tangle hides /home/viz/lib/ports/= emacs/lisp/org/ob-tangle /home/viz/lib/emacs/straight/build/org/ox-koma-letter hides /home/viz/lib/p= orts/emacs/lisp/org/ox-koma-letter /home/viz/lib/emacs/straight/build/org/ob-gnuplot hides /home/viz/lib/ports= /emacs/lisp/org/ob-gnuplot /home/viz/lib/emacs/straight/build/org/org-crypt hides /home/viz/lib/ports/= emacs/lisp/org/org-crypt /home/viz/lib/emacs/straight/build/org/org-datetree hides /home/viz/lib/por= ts/emacs/lisp/org/org-datetree /home/viz/lib/emacs/straight/build/org/org-attach hides /home/viz/lib/ports= /emacs/lisp/org/org-attach /home/viz/lib/emacs/straight/build/org/ob-julia hides /home/viz/lib/ports/e= macs/lisp/org/ob-julia /home/viz/lib/emacs/straight/build/org/ob-sqlite hides /home/viz/lib/ports/= emacs/lisp/org/ob-sqlite /home/viz/lib/emacs/straight/build/org/org-cycle hides /home/viz/lib/ports/= emacs/lisp/org/org-cycle /home/viz/lib/emacs/straight/build/org/org-faces hides /home/viz/lib/ports/= emacs/lisp/org/org-faces /home/viz/lib/emacs/straight/build/org/org-mobile hides /home/viz/lib/ports= /emacs/lisp/org/org-mobile /home/viz/lib/emacs/straight/build/org/org-ctags hides /home/viz/lib/ports/= emacs/lisp/org/org-ctags /home/viz/lib/emacs/straight/build/org/ob-latex hides /home/viz/lib/ports/e= macs/lisp/org/ob-latex /home/viz/lib/emacs/straight/build/org/ob-matlab hides /home/viz/lib/ports/= emacs/lisp/org/ob-matlab /home/viz/lib/emacs/straight/build/org/ob-sed hides /home/viz/lib/ports/ema= cs/lisp/org/ob-sed /home/viz/lib/emacs/straight/build/org/org-attach-git hides /home/viz/lib/p= orts/emacs/lisp/org/org-attach-git /home/viz/lib/emacs/straight/build/org/ob-python hides /home/viz/lib/ports/= emacs/lisp/org/ob-python /home/viz/lib/emacs/straight/build/org/ox-icalendar hides /home/viz/lib/por= ts/emacs/lisp/org/ox-icalendar /home/viz/lib/emacs/straight/build/org/org-tempo hides /home/viz/lib/ports/= emacs/lisp/org/org-tempo /home/viz/lib/emacs/straight/build/org/ob-screen hides /home/viz/lib/ports/= emacs/lisp/org/ob-screen /home/viz/lib/emacs/straight/build/org/org-num hides /home/viz/lib/ports/em= acs/lisp/org/org-num /home/viz/lib/emacs/straight/build/org/ob-forth hides /home/viz/lib/ports/e= macs/lisp/org/ob-forth /home/viz/lib/emacs/straight/build/org/ox-odt hides /home/viz/lib/ports/ema= cs/lisp/org/ox-odt /home/viz/lib/emacs/straight/build/org/ol-bbdb hides /home/viz/lib/ports/em= acs/lisp/org/ol-bbdb /home/viz/lib/emacs/straight/build/org/org-table hides /home/viz/lib/ports/= emacs/lisp/org/org-table /home/viz/lib/emacs/straight/build/org/ox-man hides /home/viz/lib/ports/ema= cs/lisp/org/ox-man /home/viz/lib/emacs/straight/build/org/ox-org hides /home/viz/lib/ports/ema= cs/lisp/org/ox-org /home/viz/lib/emacs/straight/build/org/ob-comint hides /home/viz/lib/ports/= emacs/lisp/org/ob-comint /home/viz/lib/emacs/straight/build/org/ob-clojure hides /home/viz/lib/ports= /emacs/lisp/org/ob-clojure /home/viz/lib/emacs/straight/build/org/org-id hides /home/viz/lib/ports/ema= cs/lisp/org/org-id /home/viz/lib/emacs/straight/build/org/oc-natbib hides /home/viz/lib/ports/= emacs/lisp/org/oc-natbib /home/viz/lib/emacs/straight/build/org/ox-texinfo hides /home/viz/lib/ports= /emacs/lisp/org/ox-texinfo /home/viz/lib/emacs/straight/build/org/org-agenda hides /home/viz/lib/ports= /emacs/lisp/org/org-agenda /home/viz/lib/emacs/straight/build/org/org-src hides /home/viz/lib/ports/em= acs/lisp/org/org-src /home/viz/lib/emacs/straight/build/org/ob-emacs-lisp hides /home/viz/lib/po= rts/emacs/lisp/org/ob-emacs-lisp /home/viz/lib/emacs/straight/build/org/ob-css hides /home/viz/lib/ports/ema= cs/lisp/org/ob-css /home/viz/lib/emacs/straight/build/org/ox-latex hides /home/viz/lib/ports/e= macs/lisp/org/ox-latex /home/viz/lib/emacs/straight/build/org/oc hides /home/viz/lib/ports/emacs/l= isp/org/oc /home/viz/lib/emacs/straight/build/org/ol hides /home/viz/lib/ports/emacs/l= isp/org/ol /home/viz/lib/emacs/straight/build/org/org-element hides /home/viz/lib/port= s/emacs/lisp/org/org-element /home/viz/lib/emacs/straight/build/org/org hides /home/viz/lib/ports/emacs/= lisp/org/org /home/viz/lib/emacs/straight/build/org/org-goto hides /home/viz/lib/ports/e= macs/lisp/org/org-goto /home/viz/lib/emacs/straight/build/org/ob-eval hides /home/viz/lib/ports/em= acs/lisp/org/ob-eval /home/viz/lib/emacs/straight/build/org/org-habit hides /home/viz/lib/ports/= emacs/lisp/org/org-habit /home/viz/lib/emacs/straight/build/org/org-pcomplete hides /home/viz/lib/po= rts/emacs/lisp/org/org-pcomplete /home/viz/lib/emacs/straight/build/org/ol-eww hides /home/viz/lib/ports/ema= cs/lisp/org/ol-eww /home/viz/lib/emacs/straight/build/org/ob-processing hides /home/viz/lib/po= rts/emacs/lisp/org/ob-processing /home/viz/lib/emacs/straight/build/org/org-timer hides /home/viz/lib/ports/= emacs/lisp/org/org-timer /home/viz/lib/emacs/straight/build/org/org-inlinetask hides /home/viz/lib/p= orts/emacs/lisp/org/org-inlinetask /home/viz/lib/emacs/straight/build/org/ol-bibtex hides /home/viz/lib/ports/= emacs/lisp/org/ol-bibtex /home/viz/lib/emacs/straight/build/org/org-fold-core hides /home/viz/lib/po= rts/emacs/lisp/org/org-fold-core /home/viz/lib/emacs/straight/build/org/oc-basic hides /home/viz/lib/ports/e= macs/lisp/org/oc-basic /home/viz/lib/emacs/straight/build/org/ox-publish hides /home/viz/lib/ports= /emacs/lisp/org/ox-publish /home/viz/lib/emacs/straight/build/org/oc-bibtex hides /home/viz/lib/ports/= emacs/lisp/org/oc-bibtex /home/viz/lib/emacs/straight/build/org/org-macro hides /home/viz/lib/ports/= emacs/lisp/org/org-macro /home/viz/lib/emacs/straight/build/org/ol-docview hides /home/viz/lib/ports= /emacs/lisp/org/ol-docview /home/viz/lib/emacs/straight/build/org/org-fold hides /home/viz/lib/ports/e= macs/lisp/org/org-fold /home/viz/lib/emacs/straight/build/org/org-lint hides /home/viz/lib/ports/e= macs/lisp/org/org-lint /home/viz/lib/emacs/straight/build/org/org-version hides /home/viz/lib/port= s/emacs/lisp/org/org-version /home/viz/lib/emacs/straight/build/org/ob-ocaml hides /home/viz/lib/ports/e= macs/lisp/org/ob-ocaml /home/viz/lib/emacs/straight/build/org/ob-sass hides /home/viz/lib/ports/em= acs/lisp/org/ob-sass /home/viz/lib/emacs/straight/build/org/ob-perl hides /home/viz/lib/ports/em= acs/lisp/org/ob-perl /home/viz/lib/emacs/straight/build/org/ol-rmail hides /home/viz/lib/ports/e= macs/lisp/org/ol-rmail /home/viz/lib/emacs/straight/build/org/org-protocol hides /home/viz/lib/por= ts/emacs/lisp/org/org-protocol /home/viz/lib/emacs/straight/build/org/ol-info hides /home/viz/lib/ports/em= acs/lisp/org/ol-info /home/viz/lib/emacs/straight/build/org/ob-eshell hides /home/viz/lib/ports/= emacs/lisp/org/ob-eshell /home/viz/lib/emacs/straight/build/org/org-refile hides /home/viz/lib/ports= /emacs/lisp/org/org-refile /home/viz/lib/emacs/straight/build/org/ob-octave hides /home/viz/lib/ports/= emacs/lisp/org/ob-octave /home/viz/lib/emacs/straight/build/org/ob-lua hides /home/viz/lib/ports/ema= cs/lisp/org/ob-lua /home/viz/lib/emacs/straight/build/org/ol-gnus hides /home/viz/lib/ports/em= acs/lisp/org/ol-gnus /home/viz/lib/emacs/straight/build/org/ob-makefile hides /home/viz/lib/port= s/emacs/lisp/org/ob-makefile /home/viz/lib/emacs/straight/build/org/org-archive hides /home/viz/lib/port= s/emacs/lisp/org/org-archive /home/viz/lib/emacs/straight/build/org/ob-lob hides /home/viz/lib/ports/ema= cs/lisp/org/ob-lob /home/viz/lib/emacs/straight/build/org/ol-man hides /home/viz/lib/ports/ema= cs/lisp/org/ol-man /home/viz/lib/emacs/straight/build/org/org-compat hides /home/viz/lib/ports= /emacs/lisp/org/org-compat /home/viz/lib/emacs/straight/build/org/org-colview hides /home/viz/lib/port= s/emacs/lisp/org/org-colview /home/viz/lib/emacs/straight/build/org/org-indent hides /home/viz/lib/ports= /emacs/lisp/org/org-indent /home/viz/lib/emacs/straight/build/org/ox-beamer hides /home/viz/lib/ports/= emacs/lisp/org/ox-beamer /home/viz/lib/emacs/straight/build/org/ob-calc hides /home/viz/lib/ports/em= acs/lisp/org/ob-calc Features: (shadow sort gnus-cite flyspell ispell ecomplete mail-extr shortdoc comp-common emacsbug nndraft nnmh nnmaildir nnagent nnml nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp gnus-cache pulse color misearch multi-isearch help-fns cl-print cus-start reveal recentf tree-widget vc-git diff-mode track-changes cursor-sensor latexenc vc-backup log-view log-edit add-log pcvs-util vc vc-dispatcher diff face-remap org-pdftools pdf-annot facemenu org-noter oc-bibtex image-file image-converter oc-basic org-ql-find org-ql-completing-read org-ql-search org-ql-view transient crm org-super-agenda org-ql peg ts org-habit org-duration embark-org ob-gnuplot ox-odt rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-icalendar org-agenda ox-html ox-mathml org-latex-preview ox-latex table ox-ascii ox-publish ox org-element org-persist avl-tree generator ob-fortran ob-python python ob-calc calc-store calc-trail calc-ext calc calc-loaddefs rect calc-macs ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ob-shell shell ob-racket cdlatex texmathp org-attach ol-eww eww vtable mule-util url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util mail-prsvr ol-docview doc-view ol-bibtex ol-bbdb ol-w3m ol-doi org-link-doi org-tempo org-id org-refile org-element-ast inline ol-man org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src sh-script smie treesit executable ob-comint org-pcomplete pcomplete org-list org-footnote org-faces org-entities noutline outline ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs org-version org-compat org-macs server paredit edmacro kmacro eros checkdoc flymake project wordel-autoloads mines-autoloads sokoban-autoloads ement-autoloads taxy-magit-section-autoloads magit-section-autoloads taxy-autoloads persist-autoloads nov-autoloads esxml-autoloads kv-autoloads transmission-autoloads csv-mode-autoloads lua-mode-autoloads gnuplot-autoloads go-mode-autoloads racket-mode-autoloads eros-autoloads comint-mime-autoloads writegood-mode-autoloads embark ffap thingatpt compat embark-autoloads xeft-autoloads paredit-autoloads puni-autoloads expand-region-autoloads filladapt-autoloads compose org-ql-autoloads org-super-agenda-autoloads ts-autoloads org-pdftools-autoloads org-noter-autoloads change-env-autoloads math-delimiters-autoloads doct-autoloads emacs-ob-racket-autoloads valign-autoloads cdlatex-autoloads tempo bibtex iso8601 time-date auctex-autoloads tex-site pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist advice tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc imenu pdf-tools package browse-url xdg url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source eieio eieio-core json url-vars compile comint ansi-osc ansi-color ring cus-edit wid-edit pdf-view password-cache jka-compr pdf-cache pdf-info tq pdf-util pdf-macs image-mode dired-x dired dired-loaddefs exif pdf-tools-autoloads tablist-autoloads typo-autoloads mb-depth repeat visual-fill-autoloads olivetti-autoloads time format-spec battery filenotify dom tamil99 quail disp-table lacarte-autoloads shell-command-plus-autoloads delsel xt-mouse cus-load avy-autoloads icalendar diary-lib diary-loaddefs cal-menu calendar cal-loaddefs plz dired-du-autoloads finder-inf filecache imenu-xref-autoloads ert map ewoc debug backtrace find-func qrencode-autoloads derived tochemfig-autoloads chemtable-autoloads molar-mass-autoloads files-x vc-backup-autoloads skeleton saveplace-pdf-view saveplace bookmark text-property-search pp saveplace-pdf-view-autoloads dbus xml rx plz-autoloads inspector-autoloads xr-autoloads straight-autoloads straight info loaddefs-gen generate-lisp-file lisp-mnt radix-tree easy-mmode cl-seq subr-x byte-opt cl-macs gv bytecomp byte-compile pcase vz-nh-theme vz-options-theme cl-extra help-mode warnings icons cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic indonesian philippine cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget keymap hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo x-toolkit xinput2 x multi-tty move-toolbar make-network-process tty-child-frames emacs) Memory information: ((conses 16 1129278 358282) (symbols 48 65076 11) (strings 32 424681 33561) (string-bytes 1 17744579) (vectors 16 130556) (vector-slots 8 2006052 293951) (floats 8 10509 16673) (intervals 56 12855 164) (buffers 984 42)) From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 08 11:25:18 2025 Received: (at 77627) by debbugs.gnu.org; 8 Apr 2025 15:25:18 +0000 Received: from localhost ([127.0.0.1]:34720 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u2ApB-0007qN-Bw for submit@debbugs.gnu.org; Tue, 08 Apr 2025 11:25:17 -0400 Received: from mail-pf1-x443.google.com ([2607:f8b0:4864:20::443]:46354) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1u2Ap8-0007o1-Iu for 77627@debbugs.gnu.org; Tue, 08 Apr 2025 11:25:15 -0400 Received: by mail-pf1-x443.google.com with SMTP id d2e1a72fcca58-736b98acaadso5673940b3a.1 for <77627@debbugs.gnu.org>; Tue, 08 Apr 2025 08:25:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744125908; x=1744730708; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Iisuv+9d5FEa2HbSK78M+mNbsRNJz0QwK+Vmmav3Uzs=; b=JQLzvk2/W7fbsoKigpym7hjzdutG/quljQnnWPszzeTCage8NwHfpxJwqDpv/LlMaz /AJuAR0SB3nw+uxwu3IDyJS/3JJaM4aTA0MuAoDV0QYRjfwfJ1yXyLbmEu8R9G6lAz3K TU8a/jM19NQPDJnm0qttzOfEWLkv9zmghH+Vmo4SBSgjcJ1OAIYxyBxvkB+AwGmrvpK6 3himlN1hz/LW2SjfZCotd9YoijSLxbKSJGAeV4qia5llkxn/zAtTNhhDa1uFntj17CD/ FRpqGPJWyP00T/z0H6EBM2uB7Wiytc76Dc+Ss9XP7ar2GRYcDCxxUcfw1kUysKUYi6dd v8Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744125908; x=1744730708; h=content-transfer-encoding:mime-version:user-agent:message-id:date :references:in-reply-to:subject:to:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Iisuv+9d5FEa2HbSK78M+mNbsRNJz0QwK+Vmmav3Uzs=; b=O+4dt1/axIknyyqoSh+2GIpwljmS8+MUBDHE0rGIYcS+mDhXivIi+ufHlDevyYxzSO T/AccCQvlyhNXi91oNz/x7Xrp0bDN2NAo7cMwtDUIO+Nokce1PcsPF/eYYKZpg0NRu6S DWD67DJDcaOYExf3qIGaKl9AGq/Y/zSowdfhvBRUIxeU05QwBceiMEC7aU3tvcskEtNs /jpdLGHvgj0RPdyWKn5m5z09w8Dh3VeAesgs1DyiGGzPME1OXy41kHzvJLng1TNskkwe bOUI/ncWNKqiIEW10F5ZTRhnJFfDvBwmsQ1jFpy9HNgxKIRByDRZzvisyXFz+AIqq2ad yONg== X-Gm-Message-State: AOJu0YwU+Mw1aClCtB5Lufxq/DpVKi3xPBejeqx24DnFJnEHR75H7GPf 9FHq8MOEBR4fEQ4XQbLjx9BgGTJ19Mw2kND3fBySh8FjJnwJ2XFblwYmp17d X-Gm-Gg: ASbGncttRlIbXrH1yNpeRn/2cwhhsxb2YBvd6N1K+ovPXvP35ezCDYwi6+4d5jt4SCZ euSVw3HwlXe9QoBQ7EfCspgwQlG5Ax1+jNdW9li0z/8vQIeH2GkHWS+kSiGovxAwD+gJFoPlUoB 3hclgHGH9VcYsFv3TikvvSaVIp1J/STRnocjtPa0QsOlyNzDbifEG0oi6vkp6lsx/jgXj7+P/D6 n1N9RbAcKOxqvCrHQPIIErsOIzXDf0rml8C8jZlbQ8WXkd0ccVYplMZ2DNZhj2HfO1Paq/lC7K2 P8ZrCoSsaFamt29HVceN04la9kdcO7K3RLtpXVJmxw== X-Google-Smtp-Source: AGHT+IEmV1oTK9cUqkudEi8hkLkRqOMZIWvnVNu83TMyzfVQmYhCiLTZJ8whWKkRSnETirkm+m0GnA== X-Received: by 2002:a05:6a00:3a0a:b0:736:53ce:a32c with SMTP id d2e1a72fcca58-73b6b8c5773mr13411787b3a.17.1744125907476; Tue, 08 Apr 2025 08:25:07 -0700 (PDT) Received: from localhost ([115.240.90.130]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-739d97d1a29sm10669233b3a.34.2025.04.08.08.25.06 for <77627@debbugs.gnu.org> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Apr 2025 08:25:07 -0700 (PDT) From: Visuwesh To: 77627@debbugs.gnu.org Subject: Re: bug#77627: 31.0.50; prettify-symbols-mode fails when replacement CHARACTER is a composition rule In-Reply-To: <8734ejff4t.fsf@gmail.com> References: <8734ejff4t.fsf@gmail.com> Date: Tue, 08 Apr 2025 20:55:02 +0530 Message-ID: <87plhmekvl.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 77627 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) [=E0=AE=9A=E0=AF=86=E0=AE=B5=E0=AF=8D=E0=AE=B5=E0=AE=BE=E0=AE=AF=E0=AF=8D = =E0=AE=8F=E0=AE=AA=E0=AF=8D=E0=AE=B0=E0=AE=B2=E0=AF=8D 08, 2025] Visuwesh w= rote: > As per the docstring of prettify-symbols-alist, the replacement for any > SYMBOL can be: > > Each element looks like (SYMBOL . CHARACTER), where the symbol > matching SYMBOL (a string, not a regexp) will be shown as > CHARACTER instead. > > where CHARACTER being list or vector implies that it is a composition > rule. However, prettify-symbols--composition-displayable-p fails > because it assumes CHARACTER is always a character (i.e., integer). > > To reproduce, > > 1. emacs -Q > 2. M-: (setq prettify-symbols-alist '(("\\left\\{" . (?=E2=8E=A8 (tc = . Bc) ?=E2=8E=A7 (Bc . tc) ?=E2=8E=A9)))) RET > 3. M-x toggle-debug-on-error RET > 4. M-x prettify-symbols-mode RET > 5. Witness the backtrace. OK, the new predicate does consider composition rule but there's a typo: diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index 33e0d354fee..6c6b14d455a 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -244,8 +244,8 @@ prettify-symbols--composition-displayable-p ;; check that every even-indexed element is displayable (seq-every-p (lambda (idx-elt) - (if (evenp (car idx-elt)) - (char-displayable-on-frame-p (cdr idx-elt)) + (if (evenp (cdr idx-elt)) + (char-displayable-on-frame-p (car idx-elt)) t)) (seq-map-indexed #'cons composition))) (t From debbugs-submit-bounces@debbugs.gnu.org Tue Apr 08 12:06:59 2025 Received: (at 77627-done) by debbugs.gnu.org; 8 Apr 2025 16:06:59 +0000 Received: from localhost ([127.0.0.1]:34935 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u2BTW-00048j-IL for submit@debbugs.gnu.org; Tue, 08 Apr 2025 12:06:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43432) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1u2BTT-00047t-CF for 77627-done@debbugs.gnu.org; Tue, 08 Apr 2025 12:06:56 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u2BTN-0007an-Li; Tue, 08 Apr 2025 12:06:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=kDdfzzv5gCOsrMpMAavWsB40Cmj7qDKnphEJzANBn8s=; b=nq27uaLqOnUivrdrxCSZ iMhmqyiX5YWpEaDrzr4edwrmk9T5HqabG77smQxLFEXN7faMNiocRzdbZLOxKK5jVOYOwGDpO3ePh khQdq/XT31+f6ex+oiAxcXbSKQ/qBI1FaxEd2zJJdO43fUUylvreAOMImV3FZYsxx58BXs3/Vqpyd dJPKphFd4Ll7YPqasBBfEBh+Vr/Omw7XMOArEwqDEGEJupnUFvUub8k+nxnZ4kFKaHXjz0fsiIweS lUOchA0eZEgnbEELAMF6Fdv3rjj2OvDBXtvWTFjT6H+ykkBBLibQ+FvjdTG/6CeM+4y9b+eCCuzRh cN0Uxzxq2KZLow==; Date: Tue, 08 Apr 2025 19:06:32 +0300 Message-Id: <86y0waskmv.fsf@gnu.org> From: Eli Zaretskii To: Visuwesh In-Reply-To: <87plhmekvl.fsf@gmail.com> (message from Visuwesh on Tue, 08 Apr 2025 20:55:02 +0530) Subject: Re: bug#77627: 31.0.50; prettify-symbols-mode fails when replacement CHARACTER is a composition rule References: <8734ejff4t.fsf@gmail.com> <87plhmekvl.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 77627-done Cc: 77627-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Visuwesh > Date: Tue, 08 Apr 2025 20:55:02 +0530 > > [செவ்வாய் ஏப்ரல் 08, 2025] Visuwesh wrote: > > > As per the docstring of prettify-symbols-alist, the replacement for any > > SYMBOL can be: > > > > Each element looks like (SYMBOL . CHARACTER), where the symbol > > matching SYMBOL (a string, not a regexp) will be shown as > > CHARACTER instead. > > > > where CHARACTER being list or vector implies that it is a composition > > rule. However, prettify-symbols--composition-displayable-p fails > > because it assumes CHARACTER is always a character (i.e., integer). > > > > To reproduce, > > > > 1. emacs -Q > > 2. M-: (setq prettify-symbols-alist '(("\\left\\{" . (?⎨ (tc . Bc) ?⎧ (Bc . tc) ?⎩)))) RET > > 3. M-x toggle-debug-on-error RET > > 4. M-x prettify-symbols-mode RET > > 5. Witness the backtrace. > > OK, the new predicate does consider composition rule but there's a typo: > > diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el > index 33e0d354fee..6c6b14d455a 100644 > --- a/lisp/progmodes/prog-mode.el > +++ b/lisp/progmodes/prog-mode.el > @@ -244,8 +244,8 @@ prettify-symbols--composition-displayable-p > ;; check that every even-indexed element is displayable > (seq-every-p > (lambda (idx-elt) > - (if (evenp (car idx-elt)) > - (char-displayable-on-frame-p (cdr idx-elt)) > + (if (evenp (cdr idx-elt)) > + (char-displayable-on-frame-p (car idx-elt)) > t)) > (seq-map-indexed #'cons composition))) > (t Thanks, installed on master, and closing the bug. From unknown Sat Aug 16 18:42:25 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 07 May 2025 11:24:13 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator