Subject: bug#76587: closed (Re: bug#76587: 31.0.50; [FR] project.el should have a way to exclude certain projects from being saved)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 06 Mar 2025 02:53:02 +0000

Your bug report

#76587: 31.0.50; [FR] project.el should have a way to exclude certain projects from being saved

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76587: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76587
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#76587: 31.0.50; [FR] project.el should have a way to exclude certain projects from being saved
From: Dmitry Gutov <[email-masked]>
To: Visuwesh <[email-masked]>
Cc: [email-masked], Juri Linkov <[email-masked]>
Date: Thu, 6 Mar 2025 04:52:45 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

On 03/03/2025 10:27, Visuwesh wrote:
> I've now tried to make this clearer.  I don't know what a better name
> for the user option could be.
> 
> I also updated the manual to mention this user option, and announced the
> change in NEWS in the attached.

Thanks, now pushed to master: 
https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=6aa60038ee999d25184a639ce0ac76b614e3afb6

Made some tweaks to the docs and the logic in project-remember-project, 
so please try it out.

Subject: 31.0.50; [FR] project.el should have a way to exclude certain projects from being saved
From: Visuwesh <[email-masked]>
To: [email-masked]
Date: Wed, 26 Feb 2025 19:29:40 +0530
List-Id: <debbugs-submit.debbugs.gnu.org>

It is quite frustrating to use C-x p p to jump to projects when it can
easily get cluttered with projects that you never want to jump to.
E.g., as my user-emacs-directory only really tracks init.el, I don't
want project.el to save it in the projects file.  When it does, it gets
in the way when I am completing ~/lib/ports/emacs which is where I keep
my checkout of the Emacs repo.
Likewise, I do not want to save remote projects at all.

AFAIU, the current way is to use project-forget-project and friends, but
they are cumbersome.  They work nice when you want to remove a
"completed" project but they don't help when you want to use project
commands judiciously for "temporary" projects (like a checkout that
you're editing for a patch).  I would like to have a user option like
recentf-exclude which would prevent project--write-project-list from
saving certain projects.  To that end, I propose the following patch,
WDYT?

diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 35bf66c9ffb..3bae0b7404c 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -1837,6 +1837,12 @@ project-list-file
   :version "28.1"
   :group 'project)
 
+(defcustom project-ignore-regexps nil
+  "List of regexp for project names to ignore when saving known projects."
+  :type '(repeat regexp)
+  :version "31.1"
+  :group 'project)
+
 (defvar project--list 'unset
   "List structure containing root directories of known projects.
 With some possible metadata (to be decided).")
@@ -1877,11 +1883,17 @@ project--write-project-list
       (insert ";;; -*- lisp-data -*-\n")
       (let ((print-length nil)
             (print-level nil))
-        (pp (mapcar (lambda (elem)
-                      (let ((name (car elem)))
-                        (list (if (file-remote-p name) name
-                                (expand-file-name name)))))
-                    project--list)
+        (pp (delq
+             nil
+             (mapcar (lambda (elem)
+                       (let ((name (if (file-remote-p (car elem))
+                                       (car elem)
+                                     (expand-file-name (car elem)))))
+                         (when (or (null project-ignore-regexps)
+                                   (not (seq-some (lambda (r) (string-match-p r name))
+                                                  project-ignore-regexps)))
+                           (list name))))
+                     project--list))
             (current-buffer)))
       (write-region nil nil filename nil 'silent))))

P.S. I wish there was a way for project backends to bow out from
project--write-project-list too.  Context: I have a "sibling-file"
project backend which mainly offers meaningful candidates to C-x p f
when visiting a file that has associated siblings.  I could use
find-sibling-file but using project.el comes with bonuses like
project-list-buffer, etc.

--

In GNU Emacs 31.0.50 (build 32, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.18.2, Xaw scroll bars) of 2025-02-15 built on astatine
Repository revision: 167157fc210ae078e683c80dc650e6a2bb5a6050
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=-O2'
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: ELisp/l

Minor modes in effect:
  csv-field-index-mode: t
  TeX-PDF-mode: t
  recentf-mode: t
  bug-reference-prog-mode: t
  server-mode: t
  paredit-mode: t
  eros-mode: t
  flymake-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
  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
  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/transient/transient hides /home/viz/lib/ports/emacs/lisp/transient
/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 calc-poly calc-units calcalg2 emacs-news-mode emoji-labels emoji
multisession sqlite xapian-lite xeft apropos srecode/srt-mode
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
semantic/db semantic/format srecode/template srecode/srt-wy
semantic/ctxt srecode/ctxt semantic/tag-ls semantic/find srecode/compile
srecode/dictionary srecode/fields srecode/table srecode transmission
calc-bin sqlite-mode cal-islam holidays holiday-loaddefs cal-move tcl
proced macros modula2 calc-frac calc-math ox-org org-datetree mule-diag
calc-mode calc-stuff calc-undo calc-stat calc-map calc-vec calc-yank
help-at-pt msb rfc2104 csv-mode cc-awk gnus-search eieio-opt speedbar
ezimage dframe tar-mode arc-mode archive-mode hi-lock man
gnuplot-context gnuplot mhtml-mode css-mode-expansions css-mode
html-mode-expansions sgml-mode nov esxml-query misc gnus-cus gnus-demon
gnus-diary nndiary gnus-draft gnus-dup gnus-html gnus-kill gnus-logic
gnus-mh mh-comp mh-scan mh-gnus mh-e mh-buffers mh-loaddefs
gnus-registry registry eieio-base rmailsum rmail gnus-salt gnus-uu yenc
gnus-vm math-delimiters ind-util tabify org-capture doct f90 cus-start
net-utils image-crop nndoc gnus-topic ement-room-list taxy-magit-section
taxy persist ement-tabulated-room-list ement ement-notifications
ement-notify ement-room ement-lib ement-api ement-structs ement-macros
magit-section dns find-dired js-mode-expansions js c-ts-common
calc-arith calccomp calc-aent calc-misc calc-alg calc-menu
display-line-numbers package-recipe-mode package-build
package-build-badges package-recipe locate emacsbug pcmpl-git vc-dir
winner notifications loadhist flyspell ispell ecomplete descr-text
thai-util thai-word dictionary external-completion dictionary-connection
comint-mime view conf-mode shr-color url-cache etags fileloop info-look
tramp-androidsu tramp-adb tramp-archive tramp-container tramp-ftp
tramp-gvfs grep olivetti pdf-sync pdf-outline pdf-links pdf-history
pdf-roll icomplete wdired tramp-cmds tramp-sh tramp-cache tramp trampver
tramp-integration tramp-message time-stamp tramp-compat tramp-loaddefs
latex-mode-expansions latex latex-flymake tex-ispell tex-style tex
auctex edebug imenu-xref expand-region text-mode-expansions
cc-mode-expansions the-org-mode-expansions python-el-fgallina-expansions
er-basic-expansions expand-region-core expand-region-custom shortdoc
comp-common completion dabbrev reveal cl-print ob-ditaa ob-plantuml
org-clock org-colview org-crypt org-ctags org-mouse org-plot
org-protocol ox-md ox-texinfo org-archive help-fns radix-tree recentf
tree-widget avy whitespace gnus-dired gnus-fun smerge-mode url-http
url-auth url-gw flow-fill mm-archive sort gnus-cite mail-extr textsec
uni-scripts idna-mapping ucs-normalize uni-confusable textsec-check
gnus-async gnus-bcklg qp gnus-ml network-stream nsm nndraft nnmh
nnmaildir nnagent nnml nnnil gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-msg nntp gnus-cache bug-reference dired-aux misearch
multi-isearch pulse color vc-git diff-mode track-changes make-mode xref
typo pcmpl-gnu pcmpl-unix vc-backup log-view log-edit add-log pcvs-util
vc vc-dispatcher diff latexenc 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 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 ol-man 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 ob-racket cdlatex texmathp org-attach org-id
org-refile org-element-ast inline 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 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 shell-command+ cursor-sensor shell pcomplete server paredit
edmacro kmacro eros checkdoc lisp-mnt 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
transient-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
generate-lisp-file 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 warnings icons easy-mmode dired-du-autoloads finder-inf
filecache imenu-xref-autoloads ert map byte-opt ewoc 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 info debug backtrace
find-func straight-autoloads cl-seq cl-extra help-mode straight subr-x
cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile pcase vz-nh-theme
vz-options-theme 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 5011476 1716952) (symbols 48 105061 587)
 (strings 32 725986 95855) (string-bytes 1 242071849)
 (vectors 16 359118) (vector-slots 8 5260725 809361)
 (floats 8 223120 23104) (intervals 56 414200 12226) (buffers 984 349))