Subject: 29.0.50; XDG Mailto Emacsclient Protocol Handler doesn't work with Firefox or subject

From: Björn Bidar <[email-masked]>
Date: Sun, 13 Nov 2022 19:15:21 +0200

I noticed that the Emacsclient Mailto XDG Desktop file doesn't work with
Firefox on any link.

1. Click a link mail:[email-masked]
2. Watch the syslog/journal daemon
3. Therer will be a  message that looks like this:
plasmashell[47405]: /usr/bin/sh: mailto:[email-masked]: File not found

The protocol handler works fine using Chromium.

In addition the mailto handler breaks with end of file during parsing when the mailto
link contains field such as subject, appending -x to sh results in this:
Nov 13 19:14:26 odin plasmashell[49092]: + bcc=[email-masked]")'
Nov 13 19:14:26 odin plasmashell[49093]: + exec emacsclient --alternate-editor= --display=:0 --eval '(message-mailto "mailto:[email-masked]?cc=[email-masked]'
Nov 13 19:14:26 odin plasmashell[49093]: *ERROR*: End of file during parsing

I'm reporting this together in one Bugs as the protocol handler seems
quite fragile:
1. It uses sh -c which makes escaping any kind of variable a nightmare,
any escaping done by the browser will break easy unless additonal
protetion would be applied.
2. The DISPLAY variable passed to the client is passed in the same way
   I think it should be extract in other ways than using sh -c, either
   by using a full shell script wrapper or with lisp.
   This step would be redundant on Wayland and would be missleading in
   case Emacs runs as native Wayland client and the browser uses
   XWayland.

I think any kind of wrapper that is fine using the plain %u argument
would be best.

Firefox 106.05, Chromium  107.0.5304.110.
In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.17.6) of 2022-10-16 built on 2461399
Repository revision: 0ff389c0c17b0b2938e79640e86b594344f20e55
Repository branch: master
System Description: Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-modules --with-libotf --without-gconf --with-libsystemd
 --enable-link-time-optimization --with-native-compilation
 --with-xinput2 --with-pgtk --without-xaw3d --with-sound=alsa
 --without-gpm '--program-transform-name=s/\([ec]tags\)/\1.emacs/'
 'CFLAGS=-march=x86-64 -mtune=native -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -flto=auto'
 'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto'
 'CXXFLAGS=-march=x86-64 -mtune=native -O2 -pipe -fno-plt -fexceptions
 -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security
 -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS
 -flto=auto''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS WEBP XIM GTK3 ZLIB

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Org

Minor modes in effect:
  global-atomic-chrome-edit-mode: t
  minions-mode: t
  back-button-mode: t
  recentf-mode: t
  savehist-mode: t
  treemacs-icons-dired-mode: t
  magit-wip-initial-backup-mode: t
  magit-wip-before-change-mode: t
  magit-wip-after-apply-mode: t
  magit-wip-after-save-mode: t
  magit-wip-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  global-auto-revert-mode: t
  treemacs-filewatch-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  org-edit-indirect-mode: t
  emms-playing-time-mode: t
  gnus-desktop-notify-mode: t
  doom-modeline-mode: t
  org-super-agenda-mode: t
  org-appear-mode: t
  org-modern-mode: t
  guess-language-mode: t
  ws-butler-mode: t
  selected-minor-mode: t
  flyspell-mode: t
  org-cdlatex-mode: t
  projectile-mode: t
  global-company-mode: t
  company-mode: t
  electric-pair-mode: t
  editorconfig-mode: t
  frames-only-mode: t
  marginalia-mode: t
  which-key-mode: t
  dired-async-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  global-so-long-mode: t
  change-cursor-mode: t
  mode-icons-mode: t
  global-emojify-mode: t
  emojify-mode: t
  shell-dirtrack-mode: t
  helm-autoresize-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  desktop-save-mode: t
  save-place-mode: t
  delete-selection-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/home/bidar/.emacs.d/lib/w3m/w3m-autoloads hides /home/bidar/.emacs.d/lib/w3m/shimbun/w3m-autoloads
/home/bidar/.emacs.d/lib/org/lisp/ox-koma-letter hides /home/bidar/.emacs.d/lib/lisp/ox-koma-letter
/home/bidar/.emacs.d/lib/org-contrib/lisp/ox-groff hides /home/bidar/.emacs.d/lib/lisp/ox-groff
/home/bidar/.emacs.d/lib/vim-modeline/vim-modeline hides /home/bidar/.emacs.d/lib/lisp/vim-modeline
/home/bidar/.emacs.d/lib/lisp/htmlize hides /home/bidar/.emacs.d/lib/htmlize/htmlize
/home/bidar/.emacs.d/lib/lisp/cursor-chg hides /home/bidar/.emacs.d/lib/cursor-chg/cursor-chg
/home/bidar/.emacs.d/lib/cmake-mode/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/home/bidar/.emacs.d/lib/pkgbuild-mode/pkgbuild-mode hides /usr/share/emacs/site-lisp/pkgbuild-mode
/home/bidar/.emacs.d/lib/dash/dash hides /usr/share/emacs/site-lisp/dash/dash
/home/bidar/.emacs.d/lib/dash/dash-functional hides /usr/share/emacs/site-lisp/dash/dash-functional
/home/bidar/.emacs.d/lib/web-mode/web-mode hides /usr/share/emacs/site-lisp/web-mode/web-mode
/home/bidar/.emacs.d/lib/transient/lisp/transient hides /usr/share/emacs/29.0.50/lisp/transient
/home/bidar/.emacs.d/lib/org/lisp/ox hides /usr/share/emacs/29.0.50/lisp/org/ox
/home/bidar/.emacs.d/lib/org/lisp/ox-texinfo hides /usr/share/emacs/29.0.50/lisp/org/ox-texinfo
/home/bidar/.emacs.d/lib/org/lisp/ox-publish hides /usr/share/emacs/29.0.50/lisp/org/ox-publish
/home/bidar/.emacs.d/lib/org/lisp/ox-org hides /usr/share/emacs/29.0.50/lisp/org/ox-org
/home/bidar/.emacs.d/lib/org/lisp/ox-odt hides /usr/share/emacs/29.0.50/lisp/org/ox-odt
/home/bidar/.emacs.d/lib/org/lisp/ox-md hides /usr/share/emacs/29.0.50/lisp/org/ox-md
/home/bidar/.emacs.d/lib/org/lisp/ox-man hides /usr/share/emacs/29.0.50/lisp/org/ox-man
/home/bidar/.emacs.d/lib/org/lisp/ox-latex hides /usr/share/emacs/29.0.50/lisp/org/ox-latex
/home/bidar/.emacs.d/lib/org/lisp/ox-koma-letter hides /usr/share/emacs/29.0.50/lisp/org/ox-koma-letter
/home/bidar/.emacs.d/lib/org/lisp/ox-icalendar hides /usr/share/emacs/29.0.50/lisp/org/ox-icalendar
/home/bidar/.emacs.d/lib/org/lisp/ox-html hides /usr/share/emacs/29.0.50/lisp/org/ox-html
/home/bidar/.emacs.d/lib/org/lisp/ox-beamer hides /usr/share/emacs/29.0.50/lisp/org/ox-beamer
/home/bidar/.emacs.d/lib/org/lisp/ox-ascii hides /usr/share/emacs/29.0.50/lisp/org/ox-ascii
/home/bidar/.emacs.d/lib/org/lisp/org hides /usr/share/emacs/29.0.50/lisp/org/org
/home/bidar/.emacs.d/lib/org/lisp/org-version hides /usr/share/emacs/29.0.50/lisp/org/org-version
/home/bidar/.emacs.d/lib/org/lisp/org-timer hides /usr/share/emacs/29.0.50/lisp/org/org-timer
/home/bidar/.emacs.d/lib/org/lisp/org-tempo hides /usr/share/emacs/29.0.50/lisp/org/org-tempo
/home/bidar/.emacs.d/lib/org/lisp/org-table hides /usr/share/emacs/29.0.50/lisp/org/org-table
/home/bidar/.emacs.d/lib/org/lisp/org-src hides /usr/share/emacs/29.0.50/lisp/org/org-src
/home/bidar/.emacs.d/lib/org/lisp/org-refile hides /usr/share/emacs/29.0.50/lisp/org/org-refile
/home/bidar/.emacs.d/lib/org/lisp/org-protocol hides /usr/share/emacs/29.0.50/lisp/org/org-protocol
/home/bidar/.emacs.d/lib/org/lisp/org-plot hides /usr/share/emacs/29.0.50/lisp/org/org-plot
/home/bidar/.emacs.d/lib/org/lisp/org-pcomplete hides /usr/share/emacs/29.0.50/lisp/org/org-pcomplete
/home/bidar/.emacs.d/lib/org/lisp/org-num hides /usr/share/emacs/29.0.50/lisp/org/org-num
/home/bidar/.emacs.d/lib/org/lisp/org-mouse hides /usr/share/emacs/29.0.50/lisp/org/org-mouse
/home/bidar/.emacs.d/lib/org/lisp/org-mobile hides /usr/share/emacs/29.0.50/lisp/org/org-mobile
/home/bidar/.emacs.d/lib/org/lisp/org-macs hides /usr/share/emacs/29.0.50/lisp/org/org-macs
/home/bidar/.emacs.d/lib/org/lisp/org-macro hides /usr/share/emacs/29.0.50/lisp/org/org-macro
/home/bidar/.emacs.d/lib/org/lisp/org-loaddefs hides /usr/share/emacs/29.0.50/lisp/org/org-loaddefs
/home/bidar/.emacs.d/lib/org/lisp/org-list hides /usr/share/emacs/29.0.50/lisp/org/org-list
/home/bidar/.emacs.d/lib/org/lisp/org-lint hides /usr/share/emacs/29.0.50/lisp/org/org-lint
/home/bidar/.emacs.d/lib/org/lisp/org-keys hides /usr/share/emacs/29.0.50/lisp/org/org-keys
/home/bidar/.emacs.d/lib/org/lisp/org-inlinetask hides /usr/share/emacs/29.0.50/lisp/org/org-inlinetask
/home/bidar/.emacs.d/lib/org/lisp/org-indent hides /usr/share/emacs/29.0.50/lisp/org/org-indent
/home/bidar/.emacs.d/lib/org/lisp/org-id hides /usr/share/emacs/29.0.50/lisp/org/org-id
/home/bidar/.emacs.d/lib/org/lisp/org-habit hides /usr/share/emacs/29.0.50/lisp/org/org-habit
/home/bidar/.emacs.d/lib/org/lisp/org-goto hides /usr/share/emacs/29.0.50/lisp/org/org-goto
/home/bidar/.emacs.d/lib/org/lisp/org-footnote hides /usr/share/emacs/29.0.50/lisp/org/org-footnote
/home/bidar/.emacs.d/lib/org/lisp/org-feed hides /usr/share/emacs/29.0.50/lisp/org/org-feed
/home/bidar/.emacs.d/lib/org/lisp/org-faces hides /usr/share/emacs/29.0.50/lisp/org/org-faces
/home/bidar/.emacs.d/lib/org/lisp/org-entities hides /usr/share/emacs/29.0.50/lisp/org/org-entities
/home/bidar/.emacs.d/lib/org/lisp/org-element hides /usr/share/emacs/29.0.50/lisp/org/org-element
/home/bidar/.emacs.d/lib/org/lisp/org-duration hides /usr/share/emacs/29.0.50/lisp/org/org-duration
/home/bidar/.emacs.d/lib/org/lisp/org-datetree hides /usr/share/emacs/29.0.50/lisp/org/org-datetree
/home/bidar/.emacs.d/lib/org/lisp/org-ctags hides /usr/share/emacs/29.0.50/lisp/org/org-ctags
/home/bidar/.emacs.d/lib/org/lisp/org-crypt hides /usr/share/emacs/29.0.50/lisp/org/org-crypt
/home/bidar/.emacs.d/lib/org/lisp/org-compat hides /usr/share/emacs/29.0.50/lisp/org/org-compat
/home/bidar/.emacs.d/lib/org/lisp/org-colview hides /usr/share/emacs/29.0.50/lisp/org/org-colview
/home/bidar/.emacs.d/lib/org/lisp/org-clock hides /usr/share/emacs/29.0.50/lisp/org/org-clock
/home/bidar/.emacs.d/lib/org/lisp/org-capture hides /usr/share/emacs/29.0.50/lisp/org/org-capture
/home/bidar/.emacs.d/lib/org/lisp/org-attach hides /usr/share/emacs/29.0.50/lisp/org/org-attach
/home/bidar/.emacs.d/lib/org/lisp/org-attach-git hides /usr/share/emacs/29.0.50/lisp/org/org-attach-git
/home/bidar/.emacs.d/lib/org/lisp/org-archive hides /usr/share/emacs/29.0.50/lisp/org/org-archive
/home/bidar/.emacs.d/lib/org/lisp/org-agenda hides /usr/share/emacs/29.0.50/lisp/org/org-agenda
/home/bidar/.emacs.d/lib/org/lisp/ol hides /usr/share/emacs/29.0.50/lisp/org/ol
/home/bidar/.emacs.d/lib/org/lisp/ol-w3m hides /usr/share/emacs/29.0.50/lisp/org/ol-w3m
/home/bidar/.emacs.d/lib/org/lisp/ol-rmail hides /usr/share/emacs/29.0.50/lisp/org/ol-rmail
/home/bidar/.emacs.d/lib/org/lisp/ol-mhe hides /usr/share/emacs/29.0.50/lisp/org/ol-mhe
/home/bidar/.emacs.d/lib/org/lisp/ol-man hides /usr/share/emacs/29.0.50/lisp/org/ol-man
/home/bidar/.emacs.d/lib/org/lisp/ol-irc hides /usr/share/emacs/29.0.50/lisp/org/ol-irc
/home/bidar/.emacs.d/lib/org/lisp/ol-info hides /usr/share/emacs/29.0.50/lisp/org/ol-info
/home/bidar/.emacs.d/lib/org/lisp/ol-gnus hides /usr/share/emacs/29.0.50/lisp/org/ol-gnus
/home/bidar/.emacs.d/lib/org/lisp/ol-eww hides /usr/share/emacs/29.0.50/lisp/org/ol-eww
/home/bidar/.emacs.d/lib/org/lisp/ol-eshell hides /usr/share/emacs/29.0.50/lisp/org/ol-eshell
/home/bidar/.emacs.d/lib/org/lisp/ol-doi hides /usr/share/emacs/29.0.50/lisp/org/ol-doi
/home/bidar/.emacs.d/lib/org/lisp/ol-docview hides /usr/share/emacs/29.0.50/lisp/org/ol-docview
/home/bidar/.emacs.d/lib/org/lisp/ol-bibtex hides /usr/share/emacs/29.0.50/lisp/org/ol-bibtex
/home/bidar/.emacs.d/lib/org/lisp/ol-bbdb hides /usr/share/emacs/29.0.50/lisp/org/ol-bbdb
/home/bidar/.emacs.d/lib/org/lisp/oc hides /usr/share/emacs/29.0.50/lisp/org/oc
/home/bidar/.emacs.d/lib/org/lisp/oc-natbib hides /usr/share/emacs/29.0.50/lisp/org/oc-natbib
/home/bidar/.emacs.d/lib/org/lisp/oc-csl hides /usr/share/emacs/29.0.50/lisp/org/oc-csl
/home/bidar/.emacs.d/lib/org/lisp/oc-biblatex hides /usr/share/emacs/29.0.50/lisp/org/oc-biblatex
/home/bidar/.emacs.d/lib/org/lisp/oc-basic hides /usr/share/emacs/29.0.50/lisp/org/oc-basic
/home/bidar/.emacs.d/lib/org/lisp/ob hides /usr/share/emacs/29.0.50/lisp/org/ob
/home/bidar/.emacs.d/lib/org/lisp/ob-tangle hides /usr/share/emacs/29.0.50/lisp/org/ob-tangle
/home/bidar/.emacs.d/lib/org/lisp/ob-table hides /usr/share/emacs/29.0.50/lisp/org/ob-table
/home/bidar/.emacs.d/lib/org/lisp/ob-sqlite hides /usr/share/emacs/29.0.50/lisp/org/ob-sqlite
/home/bidar/.emacs.d/lib/org/lisp/ob-sql hides /usr/share/emacs/29.0.50/lisp/org/ob-sql
/home/bidar/.emacs.d/lib/org/lisp/ob-shell hides /usr/share/emacs/29.0.50/lisp/org/ob-shell
/home/bidar/.emacs.d/lib/org/lisp/ob-sed hides /usr/share/emacs/29.0.50/lisp/org/ob-sed
/home/bidar/.emacs.d/lib/org/lisp/ob-screen hides /usr/share/emacs/29.0.50/lisp/org/ob-screen
/home/bidar/.emacs.d/lib/org/lisp/ob-scheme hides /usr/share/emacs/29.0.50/lisp/org/ob-scheme
/home/bidar/.emacs.d/lib/org/lisp/ob-sass hides /usr/share/emacs/29.0.50/lisp/org/ob-sass
/home/bidar/.emacs.d/lib/org/lisp/ob-ruby hides /usr/share/emacs/29.0.50/lisp/org/ob-ruby
/home/bidar/.emacs.d/lib/org/lisp/ob-ref hides /usr/share/emacs/29.0.50/lisp/org/ob-ref
/home/bidar/.emacs.d/lib/org/lisp/ob-python hides /usr/share/emacs/29.0.50/lisp/org/ob-python
/home/bidar/.emacs.d/lib/org/lisp/ob-processing hides /usr/share/emacs/29.0.50/lisp/org/ob-processing
/home/bidar/.emacs.d/lib/org/lisp/ob-plantuml hides /usr/share/emacs/29.0.50/lisp/org/ob-plantuml
/home/bidar/.emacs.d/lib/org/lisp/ob-perl hides /usr/share/emacs/29.0.50/lisp/org/ob-perl
/home/bidar/.emacs.d/lib/org/lisp/ob-org hides /usr/share/emacs/29.0.50/lisp/org/ob-org
/home/bidar/.emacs.d/lib/org/lisp/ob-octave hides /usr/share/emacs/29.0.50/lisp/org/ob-octave
/home/bidar/.emacs.d/lib/org/lisp/ob-ocaml hides /usr/share/emacs/29.0.50/lisp/org/ob-ocaml
/home/bidar/.emacs.d/lib/org/lisp/ob-maxima hides /usr/share/emacs/29.0.50/lisp/org/ob-maxima
/home/bidar/.emacs.d/lib/org/lisp/ob-matlab hides /usr/share/emacs/29.0.50/lisp/org/ob-matlab
/home/bidar/.emacs.d/lib/org/lisp/ob-makefile hides /usr/share/emacs/29.0.50/lisp/org/ob-makefile
/home/bidar/.emacs.d/lib/org/lisp/ob-lua hides /usr/share/emacs/29.0.50/lisp/org/ob-lua
/home/bidar/.emacs.d/lib/org/lisp/ob-lob hides /usr/share/emacs/29.0.50/lisp/org/ob-lob
/home/bidar/.emacs.d/lib/org/lisp/ob-lisp hides /usr/share/emacs/29.0.50/lisp/org/ob-lisp
/home/bidar/.emacs.d/lib/org/lisp/ob-lilypond hides /usr/share/emacs/29.0.50/lisp/org/ob-lilypond
/home/bidar/.emacs.d/lib/org/lisp/ob-latex hides /usr/share/emacs/29.0.50/lisp/org/ob-latex
/home/bidar/.emacs.d/lib/org/lisp/ob-julia hides /usr/share/emacs/29.0.50/lisp/org/ob-julia
/home/bidar/.emacs.d/lib/org/lisp/ob-js hides /usr/share/emacs/29.0.50/lisp/org/ob-js
/home/bidar/.emacs.d/lib/org/lisp/ob-java hides /usr/share/emacs/29.0.50/lisp/org/ob-java
/home/bidar/.emacs.d/lib/org/lisp/ob-haskell hides /usr/share/emacs/29.0.50/lisp/org/ob-haskell
/home/bidar/.emacs.d/lib/org/lisp/ob-groovy hides /usr/share/emacs/29.0.50/lisp/org/ob-groovy
/home/bidar/.emacs.d/lib/org/lisp/ob-gnuplot hides /usr/share/emacs/29.0.50/lisp/org/ob-gnuplot
/home/bidar/.emacs.d/lib/org/lisp/ob-fortran hides /usr/share/emacs/29.0.50/lisp/org/ob-fortran
/home/bidar/.emacs.d/lib/org/lisp/ob-forth hides /usr/share/emacs/29.0.50/lisp/org/ob-forth
/home/bidar/.emacs.d/lib/org/lisp/ob-exp hides /usr/share/emacs/29.0.50/lisp/org/ob-exp
/home/bidar/.emacs.d/lib/org/lisp/ob-eval hides /usr/share/emacs/29.0.50/lisp/org/ob-eval
/home/bidar/.emacs.d/lib/org/lisp/ob-eshell hides /usr/share/emacs/29.0.50/lisp/org/ob-eshell
/home/bidar/.emacs.d/lib/org/lisp/ob-emacs-lisp hides /usr/share/emacs/29.0.50/lisp/org/ob-emacs-lisp
/home/bidar/.emacs.d/lib/org/lisp/ob-dot hides /usr/share/emacs/29.0.50/lisp/org/ob-dot
/home/bidar/.emacs.d/lib/org/lisp/ob-ditaa hides /usr/share/emacs/29.0.50/lisp/org/ob-ditaa
/home/bidar/.emacs.d/lib/org/lisp/ob-css hides /usr/share/emacs/29.0.50/lisp/org/ob-css
/home/bidar/.emacs.d/lib/org/lisp/ob-core hides /usr/share/emacs/29.0.50/lisp/org/ob-core
/home/bidar/.emacs.d/lib/org/lisp/ob-comint hides /usr/share/emacs/29.0.50/lisp/org/ob-comint
/home/bidar/.emacs.d/lib/org/lisp/ob-clojure hides /usr/share/emacs/29.0.50/lisp/org/ob-clojure
/home/bidar/.emacs.d/lib/org/lisp/ob-calc hides /usr/share/emacs/29.0.50/lisp/org/ob-calc
/home/bidar/.emacs.d/lib/org/lisp/ob-awk hides /usr/share/emacs/29.0.50/lisp/org/ob-awk
/home/bidar/.emacs.d/lib/org/lisp/ob-R hides /usr/share/emacs/29.0.50/lisp/org/ob-R
/home/bidar/.emacs.d/lib/org/lisp/ob-C hides /usr/share/emacs/29.0.50/lisp/org/ob-C
/home/bidar/.emacs.d/lib/flim/sasl hides /usr/share/emacs/29.0.50/lisp/net/sasl
/home/bidar/.emacs.d/lib/let-alist/let-alist hides /usr/share/emacs/29.0.50/lisp/emacs-lisp/let-alist

Features:
(shadow emacsbug cl-print helm-ring smart-region multiple-cursors
mc-separate-operations rectangular-region-mode mc-mark-pop mc-edit-lines
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors
multiple-cursors-core rect expand-region yaml-mode-expansions
subword-mode-expansions cperl-mode-expansions text-mode-expansions
cc-mode-expansions the-org-mode-expansions python-el-fgallina-expansions
er-basic-expansions expand-region-core expand-region-custom magit-extras
gnus-search eieio-opt speedbar ezimage dframe canlock gnus-html
flow-fill ace-window avy org-duration elfeed-link elfeed-show
elfeed-search elfeed-csv elfeed elfeed-curl elfeed-log xml-query
elfeed-db elfeed-lib orgit-forge orgit mailalias bbdb-pgp eudc-capf eudc
eudc-vars bbdb-message gnus-alias w3m-form w3m-symbol w3m-bookmark w3m
w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-favicon w3m-image tab-line
w3m-proc w3m-util sieve sieve-mode sieve-manage sasl sasl-anonymous
sasl-login sasl-plain mule-util gnus-gravatar gravatar dns smiley
gnus-cite qp mm-archive textsec uni-scripts idna-mapping ucs-normalize
uni-confusable textsec-check gnus-async gnus-bcklg bbdb-gnus-aux gnus-ml
nndraft nnmh nndoc gnus-topic utf-7 nnfolder time-stamp bbdb-gnus
bbdb-mua nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual
gnus-cache bug-auth netrc generic-x tabify cus-start help-fns char-fold
misearch multi-isearch helm-x-files helm-for-files mail-extr two-column
helm-descbinds dired-open image-file image-converter helm-external
epa-file network-stream url-cache winner tramp-archive tramp-gvfs
helm-command atomic-chrome websocket minions back-button smartrep
recentf tree-widget savehist systemd company-shell vc-hg vc-bzr vc-src
vc-sccs vc-svn vc-cvs vc-rcs log-view dired-collapse
treemacs-icons-dired treemacs-all-the-icons treemacs-magit forge-list
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy
gsexp ghub forge-notify forge-revnote forge-pullreq forge-issue
forge-topic yaml forge-post markdown-mode forge-repo forge forge-core
forge-db magit-bookmark magit-submodule magit-obsolete magit-popup
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit magit-repos
magit-apply magit-wip magit-log magit-diff smerge-mode diff git-commit
log-edit pcvs-util add-log magit-core magit-autorevert autorevert
magit-margin magit-transient magit-process magit-mode transient treemacs
treemacs-header-line treemacs-compatibility treemacs-mode
treemacs-bookmarks treemacs-tags treemacs-interface treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator treemacs-scope pulse
treemacs-faces org-edit-indirect edit-indirect cap-words superword
subword gitconfig-mode rainbow-delimiters goto-addr ligature
symbol-overlay hideshow vc bug-reference make-mode org-bug bug-search
bug-comment-mode bug-backend-bz-rpc bug-list-mode bug-search-common
bug-mode bug-format bug-rpc bug-debug bug-common-functions
bug-persistent-data bug-custom emms-i18n emms-history emms-score
emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue
emms-mode-line-icon emms-browser sort emms-volume emms-volume-sndioctl
emms-volume-mixerctl emms-volume-pulse emms-volume-amixer
emms-playlist-sort emms-last-played emms-player-mpd tq emms-playing-time
emms-lyrics emms-url emms-player-simple emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-info-mp3info emms-mark
emms-mode-line emms-cache emms-playlist-mode emms-info-native bindat
emms-info-libtag emms-info emms-later-do emms-source-playlist
emms-source-file locate emms emms-compat gnus-icalendar org-capture
smtpmail-async smtpmail gnus-msg gnus-desktop-notify doom-modeline
doom-modeline-segments doom-modeline-env doom-modeline-core shrink-path
gnus-demon nntp khardel yaml-mode lui-track company-emoji
company-emoji-list helm-circe circe-notifications alert notifications
circe-display-images circe-color-nicks circe lui-irc-colors irc lcs
lui-logging lui-format lui tracking shorten circe-compat bbdb-vcard
bbdb-com bbdb-vcard-vcard21 bbdb bbdb-site timezone org-caldav let-alist
icalendar ox-extra 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-koma-letter ox-latex ox-icalendar ox-html table ox-ascii ox-publish
ox url-dav url-http url-auth url-gw nsm org-expiry ol-man
org-super-agenda ts org-habit org-eldoc cdlatex reftex reftex-loaddefs
reftex-vars org-appear org-modern guess-language ws-butler selected
flyspell oc-basic org-element org-persist org-id avl-tree ol-eww eww
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 ol-docview
doc-view jka-compr ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi
cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays
holiday-loaddefs vim-modeline company-yasnippet company-anaconda appt
org-agenda org-refile org-clock org-protocol ob-sqlite ob-sql ob-shell
ob-python ob-plantuml ob-org ob-octave ob-lua ob-js ob-gnuplot ob-dot
ob-ditaa ob-clojure ob-C outshine outshine-org-cmds outorg
smartparens-org smartparens-text smartparens org ob ob-tangle ob-ref
ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint
org-pcomplete org-list org-faces org-entities ob-emacs-lisp ob-core
ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
org-loaddefs gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group
gnus-undo gnus-start gnus-dbus dbus gnus-cloud nnimap nnmail mail-source
utf7 nnoo 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 org-version org-compat org-macs noutline outline
anaconda-mode pythonic python perl-completion woman man dabbrev
cperl-mode facemenu helm-elisp helm-eval cl cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ggtags
ewoc flycheck-color-mode-line flycheck meson-mode bitbake-modes bitbake
autoinsert conf-bitbake-mode conf-mode bitbake-ff find-file bitbake-mmm
sh-script smie executable mmm-mode mmm-univ mmm-class mmm-region
mmm-auto mmm-vars mmm-utils mmm-compat bitbake-functions bitbake-compat
xterm-color magit-libgit libgit libegit2 magit-git magit-base which-func
imenu edebug debug backtrace vc-git vc-dispatcher ido magit-section
benchmark crm compat-27 diff-mode diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs midnight vlf-setup multi-vterm vterm face-remap
term disp-table ehelp vterm-module term/xterm xterm projectile skeleton
ibuf-macs ibuf-ext ibuffer ibuffer-loaddefs ispell company-oddmuse
company-keywords company-etags etags fileloop generator xref project
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic
company-template company-bbdb company elec-pair editorconfig
editorconfig-core editorconfig-core-handle editorconfig-fnmatch package
url-handlers frames-only-mode marginalia which-key dired-ranger
dired-avfs dired-rainbow dired-hacks-utils dired-async dired-du
find-dired wdired helm-icons all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons treemacs-icons treemacs-themes
treemacs-core-utils treemacs-macros treemacs-logging
treemacs-customization pfuture inline hl-line f f-shortdoc shortdoc s
helm-bookmark helm-net browse-url xml url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
mailcap helm-adaptive helm-info bookmark helm-mode helm-misc helm-files
image-dired image-dired-tags image-dired-external image-dired-util xdg
image-mode exif filenotify dired-x dired-aux dired dired-loaddefs ffap
tramp tramp-loaddefs trampver tramp-integration cus-edit pp cus-load
files-x tramp-compat parse-time iso8601 time-date ls-lisp helm-buffers
helm-occur helm-tags helm-locate helm-grep wgrep-helm wgrep grep compile
text-property-search helm-regexp format-spec helm-utils helm-help
helm-types helm-config so-long cursor-chg mode-icons emojify apropos
tar-mode arc-mode archive-mode ht dash color modus-vivendi-theme
modus-themes helm-pass thingatpt password-store with-editor shell
pcomplete comint ansi-osc ansi-color ring server helm
helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source
helm-multi-match helm-lib async auth-source-pass url-parse url-vars
auth-source password-cache printing ps-print ps-print-loaddefs lpr
desktop frameset edmacro kmacro saveplace delsel no-littering epkg-melpa
json map epkg-gelpa epkg-utils epkg-list epkg-desc wid-edit find-func
epkg closql emacsql-sqlite advice emacsql emacsql-compiler compat-26
compat compat-macs comp comp-cstr warnings icons use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core w3m-load rx
bbdb-loaddefs cl-extra help-mode cl-seq borg derived eieio byte-opt
eieio-core cl-macs gv subr-x pcase info bytecomp byte-compile cconv
autoload loaddefs-gen generate-lisp-file radix-tree cl-loaddefs cl-lib
lisp-mnt rmc iso-transl tooltip eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win pgtk-dnd 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 dynamic-setting system-font-setting
font-render-setting cairo gtk pgtk lcms2 multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 3363266 3002036)
 (symbols 48 112218 83)
 (strings 32 617305 255593)
 (string-bytes 1 18320894)
 (vectors 16 184277)
 (vector-slots 8 6180337 576554)
 (floats 8 4771 5182)
 (intervals 56 97360 1931)
 (buffers 1000 150))