Subject: 28.1; rcirc auth-source integration doesn't handle port being a number

From: Javier Olaechea <[email-masked]>
Date: Sat, 30 Apr 2022 14:15:26 -0500

If rcirc-server-alist is set using the customize interface, the port in the
plist is going to be a number, not a string. AUTH-SOURCE-SEARCH expects the
port to be a string. So M-x rcirc  with the following value

'(rcirc-server-alist
   '(("irc.libera.chat" :nick "PuercoPop" :port 6697 :user-name "PuercoPop"
:channels
      ("#emacs" "#rcirc")
      :encryption tls)))

results in AUTH-SOURCE-SEARCH throwing an error. The fix could be as
straighforward ensureing the port is a string before calling
auth-source-search[0]. ej. (if (numberp port) (number-to-string port) port)

[0]:
https://github.com/emacs-mirror/emacs/blob/95dbe4b6ae2e88213835a8ded3928b6769d78f2c/lisp/net/rcirc.el#L576

That is how I've fixed the issue locally. Not sure if other parts of rcirc
assume port will be a string.

In GNU Emacs 28.1 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo version
1.16.0, Xaw scroll bars)
 of 2022-04-10 built on PuercoDesktop
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Ubuntu 20.04.4 LTS

Configured using:
 'configure --prefix=/usr/local --with-x-toolkit=lucid
 --with-native-compiler'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG
RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM
LUCID ZLIB

Important settings:
  value of $LC_COLLATE: en_US.UTF-8
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_MONETARY: es_PE.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LC_TIME: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: rcirc

Minor modes in effect:
  flyspell-mode: t
  sly-symbol-completion-mode: t
  electric-pair-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
  winner-mode: t
  helm-descbinds-mode: t
  helm-fuz-mode: t
  helm-adaptive-mode: t
  global-anzu-mode: t
  anzu-mode: t
  recentf-mode: t
  minions-mode: t
  savehist-mode: t
  delete-selection-mode: t
  global-auto-revert-mode: t
  minibuffer-depth-indicate-mode: t
  auto-compile-on-load-mode: t
  auto-compile-on-save-mode: t
  override-global-mode: t
  rcirc-track-minor-mode: t
  rcirc-omit-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  shell-dirtrack-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  use-hard-newlines: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

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

Features:
(shadow sort mail-extr emacsbug sendmail cus-edit disp-table
network-stream helm-external misearch multi-isearch vc-hg help-fns
cl-print cus-start secrets tramp-archive tramp-gvfs tramp-cache zeroconf
doom-1337-theme paredit circe lui-irc-colors irc lcs lui-logging
lui-format lui tracking shorten flyspell ispell circe-compat elfeed-show
elfeed-search elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db
elfeed-lib avl-tree xml-query mastodon mastodon-toot emojify ht socks
elpher honcho sly sly-completion sly-buttons sly-messages sly-common
apropos hyperspec shackle trace terraform-mode hcl-mode graphql-mode
ediprolog rust-utils rust-mode rust-rustfmt rust-playpen rust-compile
rust-cargo sql view qml-mode go-dlv go-mode find-file ffap gud bundler
inf-ruby ruby-mode rails-log-mode chruby eglot array jsonrpc ert ewoc
debug flymake-proc flymake warnings compile-eslint xref-js2 js2-mode
etags fileloop tree-sitter-query scheme tree-sitter-debug generator
tree-sitter-langs tree-sitter-langs-build tar-mode arc-mode archive-mode
tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn
tsc-dyn-get dired-aux tsc-obsolete yaml-mode css-mode smie sgml-mode
facemenu eww xdg url-queue shr kinsoku svg dom mm-url gnus nnheader
elec-pair man xref dired-x notmuch hl-line notmuch-hello notmuch-tree
notmuch-show notmuch-print notmuch-crypto notmuch-mua notmuch-message
notmuch-draft notmuch-maildir-fcc notmuch-address notmuch-company
notmuch-parser notmuch-wash coolj notmuch-query goto-addr icalendar
diary-lib diary-loaddefs notmuch-tag notmuch-lib notmuch-version
notmuch-compat mm-view mml-smime smime dig org-pomodoro alert
notifications dbus org-timer org-feed helm-org org-protocol org-agenda
org-refile org-archive org-datetree org-clock ob-shell ob-sql org
org-macro org-footnote org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp org-table org-loaddefs cal-menu calendar
cal-loaddefs es-mode request js cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ob-restclient ob
ob-tangle ol org-src ob-ref ob-lob ob-table ob-exp ob-comint ob-core
ob-eval org-keys oc org-compat org-macs restclient-helm restclient
htmlize xterm-color moody doom-themes doom-themes-base tron-legacy-theme
tangotango-theme exotica-theme acme-theme parchment-theme autothemer
cyberpunk-theme moe-theme moe-dark-theme moe-light-theme gh-notify
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 let-alist forge-notify forge-revnote forge-pullreq
forge-issue forge-topic yaml bug-reference forge-post markdown-mode
color noutline outline forge-repo forge forge-core forge-db closql
emacsql-sqlite emacsql emacsql-compiler url-http url-auth url-gw nsm
magit-bookmark magit-submodule magit-obsolete 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 package url-handlers magit-repos magit-apply
magit-wip magit-log which-func imenu magit-diff smerge-mode git-commit
log-edit message rmc rfc822 mml mml-sec gnus-util rmail rmail-loaddefs
mm-decode mm-bodies mm-encode mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor server magit-mode magit-git
magit-base magit-section crm dash vc-annotate vc vc-git diff-mode
vc-dispatcher ediff ediff-merg ediff-mult ediff-wind ediff-diff
ediff-help ediff-init ediff-util winner ace-window avy password-vault+
epa-file epa derived epg rfc6068 epg-config pinentry transient darkroom
face-remap helm-dash dash-docs use-package-dash-docs gnutls puny
helm-descbinds helm-pages helm-bookmark helm-net browse-url xml url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util url-parse url-vars mailcap helm-fuz helm-command
helm-elisp helm-eval edebug backtrace find-func helm-info fuz fuz-extra
inline fuz-core helm-adaptive consult easy-kill anzu advice thingatpt
project bookmark pp proced recentf tree-widget wid-edit minions savehist
jka-compr delsel autorevert mb-depth auto-compile packed use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key use-package-core rcirc helm-mode helm-misc
helm-files image-dired image-mode dired dired-loaddefs exif filenotify
tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat
shell pcomplete parse-time iso8601 time-date ls-lisp auth-source
password-cache json map helm-buffers helm-occur helm-tags helm-locate
helm-grep wgrep-helm wgrep grep compile text-property-search comint
ansi-color ring helm-regexp format-spec helm-utils helm-help helm-types
helm helm-core easy-mmode async-bytecomp helm-global-bindings
helm-source eieio eieio-core cl-macs eieio-loaddefs helm-multi-match
helm-lib async undo-tree diff queue cus-load edmacro kmacro rx
helm-easymenu cl-extra help-mode seq byte-opt gv cl-seq borg subr-x
pcase info cl-loaddefs cl-lib bytecomp byte-compile cconv autoload
radix-tree lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr iso-transl tooltip eldoc paren electric uniquify
ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win
term/common-win x-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 cl-generic 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 simple abbrev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
x multi-tty make-network-process emacs)

Memory information:
((conses 16 698099 57754)
 (symbols 48 56500 2)
 (strings 32 197929 10143)
 (string-bytes 1 6567580)
 (vectors 16 104864)
 (vector-slots 8 1221849 80720)
 (floats 8 724 375)
 (intervals 56 5608 1635)
 (buffers 992 33))

-- 
"I object to doing things that computers can do." — Olin Shivers