GNU bug report logs - #77627
31.0.50; prettify-symbols-mode fails when replacement CHARACTER is a composition rule

Previous Next

Package: emacs;

Reported by: Visuwesh <visuweshm <at> gmail.com>

Date: Tue, 8 Apr 2025 04:33:02 UTC

Severity: normal

Found in version 31.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

To reply to this bug, email your comments to 77627 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#77627; Package emacs. (Tue, 08 Apr 2025 04:33:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Visuwesh <visuweshm <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 08 Apr 2025 04:33:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Visuwesh <visuweshm <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; prettify-symbols-mode fails when replacement CHARACTER is
 a composition rule
Date: Tue, 08 Apr 2025 10:01:30 +0530
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.

Here's the backtrace:

Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p (tc . Bc))
  #f(compiled-function (idx-elt) #<bytecode 0x16a5953a799e8953>)(((tc . Bc) . 1))
  #f(compiled-function (elt) #<bytecode -0x1301739bf3c99b86>)(((tc . Bc) . 1))
  mapc(#f(compiled-function (elt) #<bytecode -0x1301739bf3c99b86>) ((9128 . 0) ((tc . Bc) . 1) (9127 . 2) ((Bc . tc) . 3) (9129 . 4)))
  seq-do(#f(compiled-function (elt) #<bytecode -0x1301739bf3c99b86>) ((9128 . 0) ((tc . Bc) . 1) (9127 . 2) ((Bc . tc) . 3) (9129 . 4)))
  seq-every-p(#f(compiled-function (idx-elt) #<bytecode 0x16a5953a799e8953>) ((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) #<bytecode 0x1ffcfa5c70ccb19>)(("\\left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129))
  #f(compiled-function (elt) #<bytecode -0x650919a4f57c846>)(("\\left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129))
  mapcar(#f(compiled-function (elt) #<bytecode -0x650919a4f57c846>) (("\\left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129)))
  #f(compiled-function #'sequence #<bytecode -0x1de5ca3f02876e02>)(#f(compiled-function (elt) #<bytecode -0x650919a4f57c846>) (("\\left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129)))
  apply(#f(compiled-function #'sequence #<bytecode -0x1de5ca3f02876e02>) #f(compiled-function (elt) #<bytecode -0x650919a4f57c846>) (("\\left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129)) nil)
  seq-map(#f(compiled-function (elt) #<bytecode -0x650919a4f57c846>) (("\\left\\{" 9128 (tc . Bc) 9127 (Bc . tc) 9129)))
  seq-filter(#f(compiled-function (elt) #<bytecode 0x1ffcfa5c70ccb19>) (("\\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=alsa --with-x-toolkit=lucid --without-xaw3d
 --without-gconf --without-libsystemd --with-cairo CFLAGS=-g3
 CC=/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/emacs/lisp/org/ob-awk
/home/viz/lib/emacs/straight/build/org/org-capture hides /home/viz/lib/ports/emacs/lisp/org/org-capture
/home/viz/lib/emacs/straight/build/org/ob-sql hides /home/viz/lib/ports/emacs/lisp/org/ob-sql
/home/viz/lib/emacs/straight/build/org/ol-doi hides /home/viz/lib/ports/emacs/lisp/org/ol-doi
/home/viz/lib/emacs/straight/build/org/org-plot hides /home/viz/lib/ports/emacs/lisp/org/org-plot
/home/viz/lib/emacs/straight/build/org/ob-dot hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/ob-ref
/home/viz/lib/emacs/straight/build/org/org-list hides /home/viz/lib/ports/emacs/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/ports/emacs/lisp/org/ob-plantuml
/home/viz/lib/emacs/straight/build/org/org-keys hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/ox-html
/home/viz/lib/emacs/straight/build/org/oc-biblatex hides /home/viz/lib/ports/emacs/lisp/org/oc-biblatex
/home/viz/lib/emacs/straight/build/org/ob-table hides /home/viz/lib/ports/emacs/lisp/org/ob-table
/home/viz/lib/emacs/straight/build/org/ob hides /home/viz/lib/ports/emacs/lisp/org/ob
/home/viz/lib/emacs/straight/build/org/ol-w3m hides /home/viz/lib/ports/emacs/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/ports/emacs/lisp/org/org-footnote
/home/viz/lib/emacs/straight/build/org/org-entities hides /home/viz/lib/ports/emacs/lisp/org/org-entities
/home/viz/lib/emacs/straight/build/org/ob-org hides /home/viz/lib/ports/emacs/lisp/org/ob-org
/home/viz/lib/emacs/straight/build/org/org-macs hides /home/viz/lib/ports/emacs/lisp/org/org-macs
/home/viz/lib/emacs/straight/build/org/ob-shell hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/ob-lisp
/home/viz/lib/emacs/straight/build/org/ob-js hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/ox-ascii
/home/viz/lib/emacs/straight/build/org/org-persist hides /home/viz/lib/ports/emacs/lisp/org/org-persist
/home/viz/lib/emacs/straight/build/org/ox-md hides /home/viz/lib/ports/emacs/lisp/org/ox-md
/home/viz/lib/emacs/straight/build/org/org-duration hides /home/viz/lib/ports/emacs/lisp/org/org-duration
/home/viz/lib/emacs/straight/build/org/ob-lilypond hides /home/viz/lib/ports/emacs/lisp/org/ob-lilypond
/home/viz/lib/emacs/straight/build/org/ob-ruby hides /home/viz/lib/ports/emacs/lisp/org/ob-ruby
/home/viz/lib/emacs/straight/build/org/ob-core hides /home/viz/lib/ports/emacs/lisp/org/ob-core
/home/viz/lib/emacs/straight/build/org/ol-mhe hides /home/viz/lib/ports/emacs/lisp/org/ol-mhe
/home/viz/lib/emacs/straight/build/org/ob-ditaa hides /home/viz/lib/ports/emacs/lisp/org/ob-ditaa
/home/viz/lib/emacs/straight/build/org/ol-irc hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/org-feed
/home/viz/lib/emacs/straight/build/org/ob-java hides /home/viz/lib/ports/emacs/lisp/org/ob-java
/home/viz/lib/emacs/straight/build/org/ox hides /home/viz/lib/ports/emacs/lisp/org/ox
/home/viz/lib/emacs/straight/build/org/oc-csl hides /home/viz/lib/ports/emacs/lisp/org/oc-csl
/home/viz/lib/emacs/straight/build/org/ob-exp hides /home/viz/lib/ports/emacs/lisp/org/ob-exp
/home/viz/lib/emacs/straight/build/org/org-loaddefs hides /home/viz/lib/ports/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/ports/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/ports/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/emacs/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/emacs/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/emacs/lisp/org/ob-sed
/home/viz/lib/emacs/straight/build/org/org-attach-git hides /home/viz/lib/ports/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/ports/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/emacs/lisp/org/org-num
/home/viz/lib/emacs/straight/build/org/ob-forth hides /home/viz/lib/ports/emacs/lisp/org/ob-forth
/home/viz/lib/emacs/straight/build/org/ox-odt hides /home/viz/lib/ports/emacs/lisp/org/ox-odt
/home/viz/lib/emacs/straight/build/org/ol-bbdb hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/ox-man
/home/viz/lib/emacs/straight/build/org/ox-org hides /home/viz/lib/ports/emacs/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/emacs/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/emacs/lisp/org/org-src
/home/viz/lib/emacs/straight/build/org/ob-emacs-lisp hides /home/viz/lib/ports/emacs/lisp/org/ob-emacs-lisp
/home/viz/lib/emacs/straight/build/org/ob-css hides /home/viz/lib/ports/emacs/lisp/org/ob-css
/home/viz/lib/emacs/straight/build/org/ox-latex hides /home/viz/lib/ports/emacs/lisp/org/ox-latex
/home/viz/lib/emacs/straight/build/org/oc hides /home/viz/lib/ports/emacs/lisp/org/oc
/home/viz/lib/emacs/straight/build/org/ol hides /home/viz/lib/ports/emacs/lisp/org/ol
/home/viz/lib/emacs/straight/build/org/org-element hides /home/viz/lib/ports/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/emacs/lisp/org/org-goto
/home/viz/lib/emacs/straight/build/org/ob-eval hides /home/viz/lib/ports/emacs/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/ports/emacs/lisp/org/org-pcomplete
/home/viz/lib/emacs/straight/build/org/ol-eww hides /home/viz/lib/ports/emacs/lisp/org/ol-eww
/home/viz/lib/emacs/straight/build/org/ob-processing hides /home/viz/lib/ports/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/ports/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/ports/emacs/lisp/org/org-fold-core
/home/viz/lib/emacs/straight/build/org/oc-basic hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/org-fold
/home/viz/lib/emacs/straight/build/org/org-lint hides /home/viz/lib/ports/emacs/lisp/org/org-lint
/home/viz/lib/emacs/straight/build/org/org-version hides /home/viz/lib/ports/emacs/lisp/org/org-version
/home/viz/lib/emacs/straight/build/org/ob-ocaml hides /home/viz/lib/ports/emacs/lisp/org/ob-ocaml
/home/viz/lib/emacs/straight/build/org/ob-sass hides /home/viz/lib/ports/emacs/lisp/org/ob-sass
/home/viz/lib/emacs/straight/build/org/ob-perl hides /home/viz/lib/ports/emacs/lisp/org/ob-perl
/home/viz/lib/emacs/straight/build/org/ol-rmail hides /home/viz/lib/ports/emacs/lisp/org/ol-rmail
/home/viz/lib/emacs/straight/build/org/org-protocol hides /home/viz/lib/ports/emacs/lisp/org/org-protocol
/home/viz/lib/emacs/straight/build/org/ol-info hides /home/viz/lib/ports/emacs/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/emacs/lisp/org/ob-lua
/home/viz/lib/emacs/straight/build/org/ol-gnus hides /home/viz/lib/ports/emacs/lisp/org/ol-gnus
/home/viz/lib/emacs/straight/build/org/ob-makefile hides /home/viz/lib/ports/emacs/lisp/org/ob-makefile
/home/viz/lib/emacs/straight/build/org/org-archive hides /home/viz/lib/ports/emacs/lisp/org/org-archive
/home/viz/lib/emacs/straight/build/org/ob-lob hides /home/viz/lib/ports/emacs/lisp/org/ob-lob
/home/viz/lib/emacs/straight/build/org/ol-man hides /home/viz/lib/ports/emacs/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/ports/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/emacs/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))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#77627; Package emacs. (Tue, 08 Apr 2025 15:26:01 GMT) Full text and rfc822 format available.

Message #8 received at 77627 <at> debbugs.gnu.org (full text, mbox):

From: Visuwesh <visuweshm <at> gmail.com>
To: 77627 <at> debbugs.gnu.org
Subject: Re: bug#77627: 31.0.50; prettify-symbols-mode fails when
 replacement CHARACTER is a composition rule
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




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Tue, 08 Apr 2025 16:07:02 GMT) Full text and rfc822 format available.

Notification sent to Visuwesh <visuweshm <at> gmail.com>:
bug acknowledged by developer. (Tue, 08 Apr 2025 16:07:02 GMT) Full text and rfc822 format available.

Message #13 received at 77627-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Visuwesh <visuweshm <at> gmail.com>
Cc: 77627-done <at> debbugs.gnu.org
Subject: Re: bug#77627: 31.0.50;
 prettify-symbols-mode fails when replacement CHARACTER is a
 composition rule
Date: Tue, 08 Apr 2025 19:06:32 +0300
> From: Visuwesh <visuweshm <at> gmail.com>
> 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.




This bug report was last modified 4 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.