Subject: 28.1.91; package-selected-packages should not be saved to custom-file

From: Joost Kremers <[email-masked]>
Date: Wed, 31 Aug 2022 14:43:43 +0200

The variable `package-selected-packages` should not be saved to the users init
file (or whatever `custom-file` points to). This was discussed before on
emacs-devel but wasn't resolved:

<https://lists.gnu.org/archive/html/emacs-devel/2016-02/msg00958.html> but 

The gist of it is that if you keep your configuration under version control,
having package-selected-packages written to your config file is inconvenient if
you share your config across multiple machines but do not want to have the exact
same set of packages installed on each.

Even if you do want to keep the exact same set of packages on each machine, you
still need to be careful about installing them, because the order of package
installation affects the order of package-selected-packages, and so does
deleting and reinstalling a package. As a result, I often experienced
meaningless VC conflicts that needed to be resolved.

IMHO the value of package-selected-packages should be written to a separate
file, so that it's possible to put it under version control or ignore it,
independently from the rest of one's configuration.

In GNU Emacs 28.1.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0)
 of 2022-08-03 built on Lenovo
Repository revision: f23d45603918721ec80bfcef883d22fab15cb9f1
Repository branch: emacs-28
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: elementary OS 6.1 Jólnir

Configured using:
 'configure --with-native-compilation'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE
XIM XPM GTK3 ZLIB
Important settings:
  value of $LC_MONETARY: en_IE.UTF-8
  value of $LC_NUMERIC: en_IE.UTF-8
  value of $LC_TIME: en_IE.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: mu4e:main

Minor modes in effect:
  flycheck-indicator-mode: t
  mu4e-search-minor-mode: t
  mu4e-update-minor-mode: t
  mu4e-context-minor-mode: t
  minions-mode: t
  doom-modeline-mode: t
  which-key-mode: t
  global-atomic-chrome-edit-mode: t
  marginalia-mode: t
  all-the-icons-completion-mode: t
  company-prescient-mode: t
  prescient-persist-mode: t
  vertico-multiform-mode: t
  vertico-mode: t
  projectile-mode: t
  global-diff-hl-mode: t
  global-git-commit-mode: t
  csv-field-index-mode: t
  shell-dirtrack-mode: t
  company-quickhelp-mode: t
  company-quickhelp-local-mode: t
  global-company-mode: t
  electric-pair-mode: t
  recentf-mode: t
  delete-selection-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-save-visited-mode: t
  overwrite-mode: overwrite-mode-binary

Load-path shadows:
~/.emacs.d/lisp/custom hides /usr/local/share/emacs/28.1.91/lisp/custom
/home/joost/.emacs.d/elpa/transient-20220806.2224/transient hides /usr/local/share/emacs/28.1.91/lisp/transient

Features:
(shadow emacsbug qp gnutls epa-file mailalias ace-window vc-mtn vc-hg vc-bzr
vc-src vc-sccs vc-cvs vc-rcs consult-vertico consult compat-28 vc-git
display-fill-column-indicator flycheck-indicator avy smiley gnus-cite mm-archive
mail-extr visual-fill-column display-line-numbers mu4e-settings gnus-dired mu4e
mu4e-org mu4e-view gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum
gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source
utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader mu4e-main
mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail mu4e-search
mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message flow-fill mule-util
mu4e-contacts mu4e-update mu4e-folders mu4e-server mu4e-context mu4e-vars
mu4e-helpers mu4e-config jk-input-methods quail company-box company-box-doc
frame-local company-box-icons company-amelia amelia parse-csv dedicated wgrep-ag
wgrep flycheck-ledger vterm bookmark term disp-table ehelp vterm-module
term/xterm xterm ielm minions doom-modeline doom-modeline-segments
doom-modeline-env doom-modeline-core shrink-path which-key atomic-chrome iimage
image+ image-file image-converter marginalia all-the-icons-completion
company-prescient prescient orderless vertico-multiform vertico groovy-mode
dockerfile-mode sh-script smie executable jsonian impatient-mode htmlize tide
tide-lv typescript-mode indium indium-list-sources indium-scratch
indium-interaction indium-chrome indium-nodejs indium-repl indium-debugger
indium-debugger-litable js2-refactor js2r-paredit js2r-conveniences
js2r-conditionals js2r-wrapping js2r-functions js2r-vars
mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors multiple-cursors-core
rect js2r-iife js2r-formatting js2r-helpers indium-debugger-locals
indium-breakpoint indium-inspector indium-render indium-faces indium-seq-fix
indium-client indium-structs json-process-client js2-mode js cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs jupyter
python-pytest lsp-pyright dap-python paredit sesman clojure-mode align dap-mode
dap-tasks dap-launch lsp-docker dap-overlays eldoc-box jsonrpc ert debug
backtrace lsp-ui lsp-ui-flycheck lsp-ui-doc goto-addr lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline flycheck-posframe flycheck lsp-mode network-stream markdown-mode
inline imenu f f-shortdoc shortdoc lsp-ui-util face-remap lsp-protocol ht ag
vc-svn find-dired s projectile lisp-mnt grep compile ibuf-ext ibuffer
ibuffer-loaddefs thingatpt diff-hl log-view vc-dir ewoc vc vc-dispatcher
diff-mode git-commit magit-git magit-base magit-section crm compat-27 compat-26
with-editor transient compat log-edit message rfc822 mml mml-sec epa derived epg
rfc6068 epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader pcvs-util add-log autorevert filenotify
aggressive-indent sendmail mail-utils nswbuff yaml-mode yaml guess-language
flyspell ispell reftex reftex-loaddefs reftex-vars csv-mode sort tab-jump-out
yasnippet-snippets yasnippet company-org-block org-settings org-clock ob-jupyter
jupyter-tramp jupyter-server jupyter-server-ioloop jupyter-ioloop-comm
jupyter-ioloop zmq zmq-core jupyter-rest-api url-http url-auth mail-parse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm rmc
jupyter-org-extensions jupyter-org-client jupyter-repl jupyter-kernel-manager
jupyter-channel jupyter-widget-client websocket bindat simple-httpd
jupyter-client jupyter-comm-layer jupyter-messages hmac-def jupyter-mime shr
kinsoku text-property-search puny svg jupyter-kernelspec jupyter-env
jupyter-base eieio-base ob-shell ob-scheme ob-clojure ob-python python tramp-sh
org-element avl-tree dom 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 noutline outline org-version ob-emacs-lisp ob-core ob-eval
org-table oc-basic ol org-keys oc org-compat org-macs org-loaddefs find-func
cal-menu calendar cal-loaddefs denote xdg dired dired-loaddefs docker-tramp
tramp-cache tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat
shell pcomplete comint ansi-color parse-time ls-lisp format-spec biblio
biblio-download biblio-dissemin biblio-ieee biblio-hal biblio-dblp
biblio-crossref biblio-arxiv timezone biblio-doi biblio-core let-alist url-queue
ido hl-line bibtex iso8601 time-date adaptive-wrap goggles comp comp-cstr
warnings pulse posframe bm company-quickhelp pos-tip all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons company-keywords company-etags etags fileloop
generator xref project company-gtags company-dabbrev-code company-dabbrev
company-ipa company-files company-clang company-cmake company-semantic
company-template company-css company-capf company solarized-light-theme
solarized-theme solarized solarized-faces color paradox paradox-menu
paradox-commit-list hydra ring lv cus-edit pp cus-load paradox-execute
paradox-github paradox-core spinner dash cl-extra help-mode jk-functions advice
eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util notifications dbus xml edmacro kmacro server elec-pair recentf
tree-widget wid-edit delsel use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key use-package-core tex-site
easy-mmode rx realgud-recursive-autoloads info package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util
mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib pcase 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 move-toolbar gtk x-toolkit x multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 848943 78066)
 (symbols 48 64672 39)
 (strings 32 228119 24655)
 (string-bytes 1 8079504)
 (vectors 16 112770)
 (vector-slots 8 1998465 158112)
 (floats 8 1911 2096)
 (intervals 56 1567 885)
 (buffers 992 24))

-- 
Joost Kremers
Life has its moments