GNU bug report logs - #79978
31.0.50; prepare-user-lisp functions always add directory to load-path

Previous Next

Package: emacs;

Reported by: Pierre Téchoueyres <pierre.techoueyres <at> free.fr>

Date: Tue, 9 Dec 2025 19:43:02 UTC

Severity: normal

Found in version 31.0.50

To reply to this bug, email your comments to 79978 AT debbugs.gnu.org.

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#79978; Package emacs. (Tue, 09 Dec 2025 19:43:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Pierre Téchoueyres <pierre.techoueyres <at> free.fr>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 09 Dec 2025 19:43:02 GMT) Full text and rfc822 format available.

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

From: Pierre Téchoueyres <pierre.techoueyres <at> free.fr>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; prepare-user-lisp functions always add directory to load-path
Date: Tue, 09 Dec 2025 20:42:08 +0100
[Message part 1 (text/plain, inline)]
Hello Emacs maintainers,
First thanks for your work.
Yesterday I've stumbled on a annoying message at Emacs startup

[Message part 2 (text/x-org, inline)]
#+begin_quote
error: Loading file /home/my-user/.emacs.d/user-lisp/.unused/sql-hacks.el failed to provide feature ‘sql-hacks’

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.
#+end_quote
[Message part 3 (text/plain, inline)]
After some investigation I've found that the prepare-user-lisp 
function
always add directories under user-lisp-directory to load-path.
I think this should not be the case when the directory is in the
user-lisp-ignored-directories variable.

I think that the one line patch should do the work.

[Message part 4 (text/x-org, inline)]
#+begin_src diff
diff --git a/lisp/startup.el b/lisp/startup.el
index f1fb726d..37c608bb 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1268,7 +1268,7 @@ prepare-user-lisp
             (byte-recompile-file file force 0)
             (when (native-comp-available-p)
               (native-compile-async file)))))
-       ((file-directory-p file)
+       ((and (file-directory-p file) (funcall pred file))
         (add-to-list 'load-path (directory-file-name file))
         (push file dirs))))
     (unless just-activate
#+end_src
[Message part 5 (text/plain, inline)]

Thanks.


In GNU Emacs 31.0.50 (build 1, x86_64-fc43-linux-gnu, GTK+ Version
3.24.51, cairo version 1.18.4) of 2025-12-09 built on
killashandra.ballybran.fr
Repository revision: 47073fa12d149200169c921a805bde1750ca635c
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 
11.0.12401009
System Description: Fedora Linux 43 (KDE Plasma Desktop Edition)

Configured using:
'configure --prefix=/usr/local --host=x86_64-fc43-linux-gnu
--without-xwidgets --with-modules --with-mailutils --with-gconf
--with-cairo --with-native-compilation
host_alias=x86_64-fc43-linux-gnu'
Configured features:
ACL CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS 
HARFBUZZ
JPEG LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3
THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM 
XINERAMA
XINPUT2 XPM XRANDR GTK3 ZLIB
Important settings:
 value of $LC_COLLATE: C
 value of $LANG: fr_FR.UTF-8
 value of $XMODIFIERS: @im=none
 locale-coding-system: utf-8-unix

Major mode: mu4e:main

Minor modes in effect:
 mu4e-search-minor-mode: t
 mu4e-update-minor-mode: t
 windmove-mode: t
 override-global-mode: t
 editorconfig-mode: t
 persistent-scratch-autosave-mode: t
 mu4e-context-minor-mode: t
 mu4e-modeline-mode: t
 global-so-long-mode: t
 global-display-fill-column-indicator-mode: t
 minions-mode: t
 global-minions-mode: t
 which-function-mode: t
 global-modeline-region-mode: t
 modeline-region-mode: t
 smartparens-global-mode: t
 global-company-mode: t
 company-mode: t
 save-place-mode: t
 global-auto-revert-mode: t
 display-time-mode: t
 delete-selection-mode: t
 tooltip-mode: t
 global-eldoc-mode: t
 eldoc-mode: t
 show-paren-mode: t
 electric-indent-mode: t
 mouse-wheel-mode: t
 tool-bar-mode: t
 menu-bar-mode: t
 file-name-shadow-mode: t
 global-font-lock-mode: t
 font-lock-mode: t
 blink-cursor-mode: t
 minibuffer-nonselected-mode: t
 minibuffer-regexp-mode: t
 buffer-read-only: t
 size-indication-mode: t
 column-number-mode: t
 line-number-mode: t
 indent-tabs-mode: t
 transient-mark-mode: t
 auto-composition-mode: t
 auto-encryption-mode: t
 auto-compression-mode: t
 overwrite-mode: overwrite-mode-binary

Load-path shadows:
/home/ptechoueyres/.emacs.d/elpa-31/ox-odt-9.7.25.646/ox-odt hides 
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-odt
/home/ptechoueyres/.emacs.d/elpa-31/emacs-scratches/scratches 
hides /home/ptechoueyres/.emacs.d/elpa-31/scratches/scratches
/home/ptechoueyres/.emacs.d/el-get-31/tempo-c-cpp/tempo-c-cpp 
hides /home/ptechoueyres/.emacs.d/user-lisp/tempo-c-cpp
/home/ptechoueyres/.emacs.d/elpa-31/string-inflection-20251114.1041/string-inflection 
hides /home/ptechoueyres/.emacs.d/user-lisp/string-inflection
/home/ptechoueyres/.emacs.d/el-get-31/spell-number/spell-number 
hides /home/ptechoueyres/.emacs.d/user-lisp/spell-number
/home/ptechoueyres/.emacs.d/elpa-31/which-key-20240620.2145/which-key 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/which-key
/home/ptechoueyres/.emacs.d/elpa-31/transient-20251203.1001/transient 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/transient
/home/ptechoueyres/.emacs.d/elpa-31/editorconfig-20251206.733/editorconfig-tools 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/editorconfig-tools
/home/ptechoueyres/.emacs.d/elpa-31/editorconfig-20251206.733/editorconfig-fnmatch 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/editorconfig-fnmatch
/home/ptechoueyres/.emacs.d/elpa-31/editorconfig-20251206.733/editorconfig 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/editorconfig
/home/ptechoueyres/.emacs.d/elpa-31/editorconfig-20251206.733/editorconfig-core-handle 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/editorconfig-core-handle
/home/ptechoueyres/.emacs.d/elpa-31/editorconfig-20251206.733/editorconfig-core 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/editorconfig-core
/home/ptechoueyres/.emacs.d/elpa-31/editorconfig-20251206.733/editorconfig-conf-mode 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/editorconfig-conf-mode
/home/ptechoueyres/.emacs.d/elpa-31/ox-odt-9.7.25.646/ox-odt hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-odt
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-publish hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-publish
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-org hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-org
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-latex hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-latex
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-md hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-md
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-man hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-man
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-koma-letter 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-koma-letter
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-icalendar hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-icalendar
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-html hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-html
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-ascii hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-ascii
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-beamer hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-beamer
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-timer hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-timer
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-table hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-table
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-protocol hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-protocol
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-tempo hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-tempo
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-src hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-src
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-refile hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-refile
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-plot hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-plot
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-persist hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-persist
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-mobile hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-mobile
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-mouse hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-mouse
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-num hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-num
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-lint hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-lint
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-pcomplete hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-pcomplete
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-macs hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-macs
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-loaddefs hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-loaddefs
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-inlinetask 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-inlinetask
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-indent hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-indent
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-list hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-list
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-id hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-id
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-habit hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-habit
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-goto hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-goto
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-keys hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-keys
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-feed hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-feed
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-datetree hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-datetree
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-fold-core hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-fold-core
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-fold hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-fold
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-footnote hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-footnote
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-ctags hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-ctags
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-element-ast 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-element-ast
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-faces hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-faces
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-entities hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-entities
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-agenda hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-agenda
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-duration hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-duration
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-cycle hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-cycle
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-clock hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-clock
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-colview hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-colview
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-capture hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-capture
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-attach-git 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-attach-git
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-attach hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-attach
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-archive hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-archive
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-crypt hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-crypt
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-compat hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-compat
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-gnus hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-gnus
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-w3m hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-w3m
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-rmail hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-rmail
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-irc hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-irc
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-mhe hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-mhe
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-eww hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-eww
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-man hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-man
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-info hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-info
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-eshell hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-eshell
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-doi hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-doi
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-docview hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-docview
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-bibtex hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-bibtex
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol-bbdb hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol-bbdb
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/oc-csl hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/oc-csl
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/oc-natbib hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/oc-natbib
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/oc-bibtex hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/oc-bibtex
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/oc-basic hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/oc-basic
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-tangle hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-tangle
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/oc-biblatex hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/oc-biblatex
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-sqlite hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-sqlite
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-sed hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-sed
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-sql hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-sql
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-table hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-table
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-shell hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-shell
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-screen hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-screen
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-scheme hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-scheme
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-sass hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-sass
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-ruby hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-ruby
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-R hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-R
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-processing hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-processing
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-python hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-python
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-fortran hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-fortran
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-plantuml hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-plantuml
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-ref hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-ref
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-perl hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-perl
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-org hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-org
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-octave hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-octave
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-ocaml hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-ocaml
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-maxima hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-maxima
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-matlab hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-matlab
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-makefile hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-makefile
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-lua hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-lua
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-C hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-C
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-lisp hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-lisp
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-lilypond hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-lilypond
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-latex hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-latex
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-lob hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-lob
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-js hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-js
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-julia hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-julia
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-java hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-java
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-haskell hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-haskell
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-groovy hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-groovy
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-gnuplot hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-gnuplot
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-forth hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-forth
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-eshell hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-eshell
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-exp hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-exp
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-dot hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-dot
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-eval hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-eval
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-emacs-lisp hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-emacs-lisp
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-ditaa hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-ditaa
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-core hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-core
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-css hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-css
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-clojure hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-clojure
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-comint hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-comint
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-calc hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-calc
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ob-awk hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ob-awk
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-element hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-element
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox-texinfo hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox-texinfo
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ox hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ox
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/oc hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/oc
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/ol hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/ol
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-macro hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-macro
/home/ptechoueyres/.emacs.d/elpa-31/org-9.7.39/org-version hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/org/org-version
/home/ptechoueyres/.emacs.d/elpa-31/timeout-20250911.2339/timeout 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/emacs-lisp/timeout
/home/ptechoueyres/.emacs.d/elpa-31/faceup-20170925.1946/faceup 
hides 
/home/ptechoueyres/Travail/VCS/Emacs/emacs/emacs-31/lisp/emacs-lisp/faceup

Features:
(shadow sort face-remap mail-extr mu4e mu4e-dbus mu4e-org
mu4e-notification mu4e-main smtpmail mu4e-view mu4e-mime-parts crm
mu4e-headers mu4e-thread mu4e-actions mu4e-search mu4e-lists
mu4e-bookmarks mu4e-mark mu4e-labels mu4e-compose mu4e-draft
mu4e-folders mu4e-message flow-fill mu4e-contacts mu4e-update 
mu4e-vars
mu4e-obsolete gnus-msg dabbrev emacsbug add-log windmove edmacro
use-package-bind-key bind-key editorconfig editorconfig-core
editorconfig-core-handle editorconfig-fnmatch hydra lv disp-table
emacs-lock hideshow mule-util hl-todo yasnippet persistent-scratch
gtd-theme vc-git diff-mode track-changes files-x vc-dispatcher 
org-alert
alert log4e notifications gntp mu4e-theme mu4e-context 
mu4e-query-items
mu4e-server mu4e-modeline mu4e-helpers mu4e-config mu4e-window
home-theme mu4e-hacks mu4e-autoloads elfeed-theme 
elfeed-goodies-logging
elfeed-goodies-new-entry-hooks mm-url elfeed-goodies-split-pane 
popwin
elfeed-goodies-show-mode link-hint goto-addr avy
elfeed-goodies-search-mode elfeed-goodies elfeed-show 
elfeed-search
elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib 
url-queue
xml-query so-long ffap ggtags etags fileloop xref project ewoc
calendar-theme calendar-french display-fill-column-indicator
powerline-pte-theme powerline-pte modus-themes minions 
company-emoji
company-emoji-list generic-x which-func imenu modeline-region 
isearch+
isearch-prop smartparens-config smartparens-rst 
smartparens-markdown
smartparens-org smartparens-text smartparens loadhist 
company-oddmuse
company-keywords company-gtags company-dabbrev-code 
company-dabbrev
company-files company-clang company-capf company-cmake 
company-semantic
company-template company-bbdb company-ctags find-file company 
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 dbus gnus-cloud nnimap 
nnmail
mail-source utf7 nnoo gnus-spec gnus-int gnus-range message 
sendmail
yank-media rfc822 mml mml-sec epa epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win gnus
nnheader gnus-util mail-utils range ol-docview doc-view ol-bbdb 
ol-w3m
org-protocol org-mode-theme flycheck-grammalecte grammalecte 
flycheck
ox-gfm ox-md ox-odt oc-csl citeproc citeproc-itemgetters parsebib
citeproc-cite citeproc-biblatex citeproc-bibtex ol-bibtex 
parse-time
citeproc-subbibs citeproc-sort citeproc-name citeproc-formatters
citeproc-proc citeproc-disamb citeproc-itemdata
citeproc-generic-elements citeproc-macro citeproc-choose 
citeproc-date
citeproc-number rst citeproc-context citeproc-prange 
citeproc-style
citeproc-locale citeproc-term citeproc-rt citeproc-lib citeproc-s
let-alist queue bibtex iso8601 rng-loc rng-uri rng-parse rng-match
rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok 
nxml-util
odt dom xml ox-latex ox-icalendar org-agenda ox-html table 
ox-ascii
ox-publish ox org-attach org-element org-persist org-id org-refile
org-element-ast inline org org-macro org-pcomplete org-list 
org-footnote
org-faces org-entities time-date ob-emacs-lisp ob-shell shell 
pcomplete
ob-gnuplot ob-dot ob-ditaa org-loaddefs thingatpt find-func 
cal-menu
calendar cal-loaddefs avl-tree generator org-hacks config 
sql-hacks
patch.rcs keys rect ibuffer ibuffer-loaddefs user-lisp-autoloads
template jka-compr saveplace grep autorevert filenotify time 
delsel
restclient-jq jq-mode ob-restclient restclient compat view 
noutline
outline org-table ob ob-tangle ol org-src sh-script smie treesit
executable ob-ref ob-lob ob-table ob-exp ob-comint ob-core 
org-cycle
org-fold org-fold-core ob-eval org-keys oc org-compat org-version
org-macs format-spec dired+ image-dired image-dired-tags
image-dired-external image-dired-util image-mode exif image-file
image-converter bookmark+ bookmark+-key easy-mmode kmacro advice 
derived
hl-line bookmark+-1 bookmark+-bmu bookmark+-lit bookmark dired-x
dired-aux el-get-theme el-get el-get-autoloading 
el-get-list-packages
el-get-dependencies el-get-build el-get-status el-get-methods
el-get-fossil el-get-svn el-get-pacman el-get-github-zip
el-get-github-tar el-get-http-zip el-get-http-tar el-get-hg 
el-get-go
el-get-git-svn el-get-fink el-get-emacswiki el-get-http 
el-get-notify
el-get-emacsmirror el-get-github el-get-git url-http url-auth 
mail-parse
rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm 
puny
el-get-elpa el-get-darcs el-get-cvs el-get-bzr el-get-brew
el-get-builtin el-get-apt-get el-get-recipes el-get-byte-compile
el-get-custom el-get-core autoload dired dired-loaddefs scratches 
ido f
dash s powerline powerline-separators color powerline-themes 
cl-extra
help-mode use-package-ensure use-package-core cus-edit pp 
cus-start
cus-load wid-edit .user-lisp-autoloads loaddefs-gen lisp-mnt 
radix-tree
comp-run comp-common rx warnings compile text-property-search 
comint
ansi-osc ansi-color ring all-the-icons-gnus-autoloads
all-the-icons-autoloads auctex-autoloads tex-site
browse-kill-ring-autoloads buffer-move-autoloads 
company-ctags-autoloads
company-emoji-autoloads company-autoloads debbugs-autoloads
editorconfig-autoloads ef-themes-autoloads 
elfeed-goodies-autoloads
elfeed-autoloads emacs-scratches-autoloads faceup-autoloads
flycheck-grammalecte-autoloads flycheck-autoloads forge-autoloads
closql-autoloads emacsql-autoloads ggtags-autoloads ghub-autoloads
git-modes-autoloads git-timemachine-autoloads hl-todo-autoloads
htmlize-autoloads hydra-autoloads inputrc-mode-autoloads
link-hint-autoloads avy-autoloads lv-autoloads magit-autoloads 
pcase
magit-section-autoloads llama-autoloads minions-autoloads
ob-restclient-autoloads org-alert-autoloads alert-autoloads
log4e-autoloads gntp-autoloads ox-gfm-autoloads ox-odt-autoloads
citeproc-autoloads org-autoloads parsebib-autoloads
password-generator-autoloads persistent-scratch-autoloads
popwin-autoloads powerline-autoloads queue-autoloads 
rebox2-autoloads
restclient-jq-autoloads jq-mode-autoloads restclient-autoloads
rnc-mode-autoloads scratches-autoloads f-autoloads s-autoloads
finder-inf smart-compile-autoloads smartparens-autoloads 
dash-autoloads
standard-themes-autoloads modus-themes-autoloads
string-inflection-autoloads sx-autoloads markdown-mode-autoloads
timeout-autoloads transient-autoloads cond-let-autoloads
treepy-autoloads which-key-autoloads info with-editor-autoloads
yaml-autoloads yasnippet-autoloads 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 cl-seq eieio eieio-core cl-macs icons password-cache 
json
subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs 
cl-lib
early-init 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 gtk x-toolkit xinput2 x multi-tty 
move-toolbar
make-network-process tty-child-frames native-compile emacs)

Memory information:
((conses 16 816197 136485) (symbols 48 50560 1)
(strings 32 227794 9294) (string-bytes 1 7889983) (vectors 16 
107672)
(vector-slots 8 1165205 39289) (floats 8 979 184)
(intervals 56 5704 2369) (buffers 1064 18))

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79978; Package emacs. (Wed, 10 Dec 2025 13:29:01 GMT) Full text and rfc822 format available.

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

From: Sean Whitton <spwhitton <at> spwhitton.name>
To: 79978 <at> debbugs.gnu.org, Philip Kaludercic <philipk <at> posteo.net>, Pierre
 Téchoueyres <pierre.techoueyres <at> free.fr>
Subject: Re: bug#79978: 31.0.50; prepare-user-lisp functions always add
 directory to load-path
Date: Wed, 10 Dec 2025 13:28:33 +0000
Hello,

On Tue 09 Dec 2025 at 08:42pm +01, Pierre Téchoueyres via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:

> Hello Emacs maintainers,
> First thanks for your work.
> Yesterday I've stumbled on a annoying message at Emacs startup
>
> #+begin_quote
> error: Loading file /home/my-user/.emacs.d/user-lisp/.unused/sql-hacks.el failed to provide feature ‘sql-hacks’
>
> To ensure normal operation, you should investigate and remove the
> cause of the error in your initialization file.  Start Emacs with
> the ‘--debug-init’ option to view a complete error backtrace.
> #+end_quote
>
>
> After some investigation I've found that the prepare-user-lisp function
> always add directories under user-lisp-directory to load-path.
> I think this should not be the case when the directory is in the
> user-lisp-ignored-directories variable.
>
> I think that the one line patch should do the work.
>
> #+begin_src diff
> diff --git a/lisp/startup.el b/lisp/startup.el
> index f1fb726d..37c608bb 100644
> --- a/lisp/startup.el
> +++ b/lisp/startup.el
> @@ -1268,7 +1268,7 @@ prepare-user-lisp
>              (byte-recompile-file file force 0)
>              (when (native-comp-available-p)
>                (native-compile-async file)))))
> -       ((file-directory-p file)
> +       ((and (file-directory-p file) (funcall pred file))
>          (add-to-list 'load-path (directory-file-name file))
>          (push file dirs))))
>      (unless just-activate
> #+end_src

Makes sense to me, but let's get Philip to confirm.

-- 
Sean Whitton




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79978; Package emacs. (Wed, 10 Dec 2025 19:56:02 GMT) Full text and rfc822 format available.

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

From: Philip Kaludercic <philipk <at> posteo.net>
To: Sean Whitton <spwhitton <at> spwhitton.name>
Cc: Pierre Téchoueyres <pierre.techoueyres <at> free.fr>,
 79978 <at> debbugs.gnu.org
Subject: Re: bug#79978: 31.0.50; prepare-user-lisp functions always add
 directory to load-path
Date: Wed, 10 Dec 2025 19:54:52 +0000
Sean Whitton <spwhitton <at> spwhitton.name> writes:

> Hello,
>
> On Tue 09 Dec 2025 at 08:42pm +01, Pierre Téchoueyres via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
>
>> Hello Emacs maintainers,
>> First thanks for your work.
>> Yesterday I've stumbled on a annoying message at Emacs startup
>>
>> #+begin_quote
>> error: Loading file /home/my-user/.emacs.d/user-lisp/.unused/sql-hacks.el failed to provide feature ‘sql-hacks’
>>
>> To ensure normal operation, you should investigate and remove the
>> cause of the error in your initialization file.  Start Emacs with
>> the ‘--debug-init’ option to view a complete error backtrace.
>> #+end_quote
>>
>>
>> After some investigation I've found that the prepare-user-lisp function
>> always add directories under user-lisp-directory to load-path.
>> I think this should not be the case when the directory is in the
>> user-lisp-ignored-directories variable.
>>
>> I think that the one line patch should do the work.
>>
>> #+begin_src diff
>> diff --git a/lisp/startup.el b/lisp/startup.el
>> index f1fb726d..37c608bb 100644
>> --- a/lisp/startup.el
>> +++ b/lisp/startup.el
>> @@ -1268,7 +1268,7 @@ prepare-user-lisp
>>              (byte-recompile-file file force 0)
>>              (when (native-comp-available-p)
>>                (native-compile-async file)))))
>> -       ((file-directory-p file)
>> +       ((and (file-directory-p file) (funcall pred file))
>>          (add-to-list 'load-path (directory-file-name file))
>>          (push file dirs))))
>>      (unless just-activate
>> #+end_src
>
> Makes sense to me, but let's get Philip to confirm.

Hi, thanks for notifying me quickly!

And yes, that sounds like it is the right diagnosis -- my mistake was
assuming that `directory-files-recursively' would use PREDICATE to
filter out files... We can probably make this slightly more efficient by
pulling out the regular expression out of the `pred' closure and calling
`string-match-p' directly instead of funcall'ing it.  Pierre, can you do
this?  Otherwise I'll return to it in the coming days..

Long term I still think that a revamp of `directory-files-recursively'
would be appropriated...




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79978; Package emacs. (Wed, 10 Dec 2025 21:55:02 GMT) Full text and rfc822 format available.

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

From: Pierre Téchoueyres <pierre.techoueyres <at> free.fr>
To: Philip Kaludercic <philipk <at> posteo.net>
Cc: 79978 <at> debbugs.gnu.org, Sean Whitton <spwhitton <at> spwhitton.name>
Subject: Re: bug#79978: 31.0.50; prepare-user-lisp functions always add
 directory to load-path
Date: Wed, 10 Dec 2025 22:54:09 +0100
[Message part 1 (text/plain, inline)]
Hello Philip,
Le mercredi 10 déc. 2025 à 19:54, Philip Kaludercic <philipk <at> posteo.net> a écrit :
> …
> Hi, thanks for notifying me quickly!
>
> And yes, that sounds like it is the right diagnosis -- my mistake was
> assuming that `directory-files-recursively' would use PREDICATE to
> filter out files...
You mean directories here didn't you ?

> We can probably make this slightly more efficient by
> pulling out the regular expression out of the `pred' closure and calling
> `string-match-p' directly instead of funcall'ing it.  Pierre, can you do
> this?  Otherwise I'll return to it in the coming days..
>

Something like that ?
[Message part 2 (text/x-org, inline)]
#+begin_src diff
diff --git a/lisp/startup.el b/lisp/startup.el
index f1fb726d..41e08d4d 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1251,11 +1251,11 @@ prepare-user-lisp
   (unless autoload-file
     (setq autoload-file (expand-file-name ".user-lisp-autoloads.el"
                                           user-lisp-directory)))
-  (let* ((pred
-          (let ((ignored
-                 (concat "\\`" (regexp-opt user-lisp-ignored-directories) "\\'")))
-            (lambda (dir)
-              (not (string-match-p ignored (file-name-nondirectory dir))))))
+  (let* ((ignored
+          (concat "\\`" (regexp-opt user-lisp-ignored-directories) "\\'"))
+         (pred
+          (lambda (dir)
+            (not (string-match-p ignored (file-name-nondirectory dir)))))
          (dir (expand-file-name user-lisp-directory))
          (backup-inhibited t)
          (dirs (list dir)))
@@ -1268,7 +1268,8 @@ prepare-user-lisp
             (byte-recompile-file file force 0)
             (when (native-comp-available-p)
               (native-compile-async file)))))
-       ((file-directory-p file)
+       ((and (file-directory-p file)
+             (not (string-match-p ignored (file-name-nondirectory file))))
         (add-to-list 'load-path (directory-file-name file))
         (push file dirs))))
     (unless just-activate
#+end_src
[Message part 3 (text/plain, inline)]

> Long term I still think that a revamp of `directory-files-recursively'
> would be appropriated...
I doubt you could easily change its so long time behaviour of not
filtering directories (even if I think it look like a bug).

This bug report was last modified today.

Previous Next


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