GNU bug report logs - #78097
30.1; editorconfig can pass nil to file-name-directory

Previous Next

Package: emacs;

Reported by: "Peter J. Jones" <mlists <at> devalot.com>

Date: Sun, 27 Apr 2025 15:31:02 UTC

Severity: normal

Found in version 30.1

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 78097 in the body.
You can then email your comments to 78097 AT debbugs.gnu.org in the normal way.

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#78097; Package emacs. (Sun, 27 Apr 2025 15:31:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Peter J. Jones" <mlists <at> devalot.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 27 Apr 2025 15:31:03 GMT) Full text and rfc822 format available.

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

From: "Peter J. Jones" <mlists <at> devalot.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.1; editorconfig can pass nil to file-name-directory
Date: Sun, 27 Apr 2025 14:58:50 +0200
When a function called from `editorconfig-get-local-variables-functions'
returns an alist, but there is no .editorconfig file in the directory
tree, the `editorconfig--get-dir-local-variables' function will pass nil
to `file-name-directory', causing an error (stringp nil).

This happens because `editorconfig--get-dir-local-variables' calls
`editorconfig-core-get-nearest-editorconfig', which returns nil, and
passes that nil on to `file-name-directory'.

The following patch fixes the problem:

--- editorconfig.el.orig        2025-04-27 14:52:35.208707072 +0200
+++ editorconfig.el     2025-04-27 14:53:19.423741999 +0200
@@ -739,11 +739,10 @@
       ;; settings from each file individually and let hack-dir-local merge
       ;; them because hack-dir-local doesn't have the notion of "unset",
       ;; and because the conversion of `indent_size' depends on `tab_width'.
-      (when alist
-        (cons
-         (file-name-directory (editorconfig-core-get-nearest-editorconfig
-                               buffer-file-name))
-         alist)))))
+      (when-let* ((alist)
+                  (file (editorconfig-core-get-nearest-editorconfig
+                         buffer-file-name)))
+        (cons (file-name-directory file) alist)))))
 
 ;;;###autoload
 (define-minor-mode editorconfig-mode

In GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.43,
cairo version 1.18.2)
System Description: NixOS 24.11 (Vicuna)

Configured using:
 'configure
 --prefix=/nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1
 --disable-build-details --with-modules --with-pgtk
 --with-compress-install --with-toolkit-scroll-bars
 --with-native-compilation --without-imagemagick --with-mailutils
 --without-small-ja-dic --with-tree-sitter --without-xinput2
 --without-xwidgets --with-dbus --with-selinux'

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

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

Major mode: ELisp/l

Minor modes in effect:
  editorconfig-mode: t
  csv-field-index-mode: t
  consult-org-roam-mode: t
  org-roam-db-autosync-mode: t
  pdf-occur-global-minor-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  mu4e-modeline-mode: t
  org-clock-dbus-mode: t
  org-edna-mode: t
  yas-minor-mode: t
  display-line-numbers-mode: t
  flycheck-indicator-mode: t
  flycheck-mode: t
  save-place-mode: t
  winum-mode: t
  winner-mode: t
  which-key-mode: t
  vertico-prescient-mode: t
  marginalia-mode: t
  vertico-multiform-mode: t
  vertico-mode: t
  repeat-mode: t
  minions-mode: t
  global-jinx-mode: t
  jinx-mode: t
  global-hl-todo-mode: t
  hl-todo-mode: t
  global-diff-hl-mode: t
  diff-hl-mode: t
  global-auto-revert-mode: t
  envrc-global-mode: t
  envrc-mode: t
  electric-pair-mode: t
  corfu-popupinfo-mode: t
  corfu-prescient-mode: t
  corfu-history-mode: t
  global-corfu-mode: t
  corfu-mode: t
  savehist-mode: t
  server-mode: t
  puni-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: #[128 \304\300\301#\207 [yas--auto-fill do-auto-fill :around nil apply] 5 advice]
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/ef-themes-1.8.0/theme-loaddefs hides /nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/modus-themes-20241007.1332/theme-loaddefs
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/site-start hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/site-lisp/site-start
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/transient-20241008.1824/transient hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/transient
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/ef-themes-1.8.0/theme-loaddefs hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/theme-loaddefs
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/jsonrpc-1.0.25/jsonrpc hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/jsonrpc
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/xref-1.7.0/xref hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/progmodes/xref
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/project-0.11.1/project hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/progmodes/project
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-bbdb hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-bbdb
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-latex hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-latex
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-lint hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-lint
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-core hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-core
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-fold-core hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-fold-core
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-groovy hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-groovy
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-macro hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-macro
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-capture hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-capture
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-haskell hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-haskell
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-emacs-lisp hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-emacs-lisp
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-ocaml hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-ocaml
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-R hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-R
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-habit hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-habit
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-C hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-C
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-entities hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-entities
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-faces hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-faces
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-crypt hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-crypt
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-octave hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-octave
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-ascii hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-ascii
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-tangle hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-tangle
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-matlab hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-matlab
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-colview hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-colview
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-makefile hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-makefile
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-eww hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-eww
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-plot hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-plot
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-clojure hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-clojure
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-gnuplot hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-gnuplot
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-list hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-list
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-perl hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-perl
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-odt hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-odt
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-md hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-md
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-tempo hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-tempo
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/oc-biblatex hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/oc-biblatex
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-sql hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-sql
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-python hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-python
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-publish hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-publish
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-gnus hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-gnus
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-man hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-man
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-keys hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-keys
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-koma-letter hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-koma-letter
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-refile hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-refile
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-element hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-element
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-ditaa hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-ditaa
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-eshell hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-eshell
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-sqlite hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-sqlite
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-agenda hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-agenda
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-texinfo hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-texinfo
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-css hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-css
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-cycle hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-cycle
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-bibtex hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-bibtex
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-ctags hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-ctags
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-eval hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-eval
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-shell hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-shell
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-maxima hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-maxima
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-num hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-num
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-attach hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-attach
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-comint hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-comint
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-doi hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-doi
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-processing hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-processing
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-src hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-src
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-mobile hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-mobile
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-persist hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-persist
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-org hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-org
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-goto hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-goto
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-mhe hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-mhe
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-org hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-org
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-java hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-java
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-julia hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-julia
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-man hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-man
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-exp hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-exp
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-lob hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-lob
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-archive hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-archive
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-eshell hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-eshell
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-feed hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-feed
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-indent hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-indent
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-scheme hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-scheme
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-rmail hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-rmail
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-beamer hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-beamer
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/oc-basic hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/oc-basic
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-pcomplete hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-pcomplete
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/oc hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/oc
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-table hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-table
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-js hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-js
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-inlinetask hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-inlinetask
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-timer hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-timer
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-sass hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-sass
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-lilypond hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-lilypond
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-fortran hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-fortran
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-irc hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-irc
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-protocol hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-protocol
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-awk hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-awk
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-id hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-id
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-docview hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-docview
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-compat hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-compat
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-latex hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-latex
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-mouse hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-mouse
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-html hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-html
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/oc-bibtex hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/oc-bibtex
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-lua hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-lua
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-sed hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-sed
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-ruby hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-ruby
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-ref hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-ref
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-calc hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-calc
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-dot hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-dot
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-version hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-version
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-attach-git hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-attach-git
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-forth hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-forth
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-clock hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-clock
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-info hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-info
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-datetree hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-datetree
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-plantuml hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-plantuml
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/oc-csl hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/oc-csl
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-fold hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-fold
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-macs hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-macs
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ol-w3m hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ol-w3m
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-lisp hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-lisp
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-table hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-table
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-loaddefs hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-loaddefs
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-element-ast hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-element-ast
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-footnote hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-footnote
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox-icalendar hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox-icalendar
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/oc-natbib hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/oc-natbib
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ob-screen hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ob-screen
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/org-duration hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/org-duration
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.7.12/ox hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/org/ox
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/nadvice-0.4/nadvice hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/nadvice
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/eldoc-1.15.0/eldoc hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/eldoc
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/compat-30.0.0.0/compat hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/compat
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/map-3.3.1/map hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/map
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/let-alist
/nix/store/6y8s8xqy6rn9b42nf3rbg4bnf6b3kap0-emacs-packages-deps/share/emacs/site-lisp/elpa/seq-2.24/seq hides /nix/store/ss2l3dmx67wjjbrajz7fg9y9f48ialj5-emacs-pgtk-30.1/share/emacs/30.1/lisp/emacs-lisp/seq

Features:
(shadow emacsbug edebug emacs-news-mode minibuf-eldef js-mode-expansions
js disass korea-util rg rg-info-hack rg-menu rg-ibuffer rg-result
wgrep-rg wgrep rg-history rg-header grep editorconfig-tools editorconfig
editorconfig-core editorconfig-core-handle editorconfig-fnmatch
editorconfig-conf-mode conf-mode orgalist apropos embark-org
embark-consult embark ob-ditaa org-colview org-crypt org-ctags org-habit
org-mouse org-plot ox-texinfo org-ref-natbib-bbl-citeproc ess-tracebug
ess-utils ess-custom cl-print debug backtrace vertico-quick
mastodon-media mastodon-profile mastodon-auth mastodon-client plstore
mastodon-tl mastodon mastodon-search mastodon-toot mastodon-iso persist
mastodon-http dictionary external-completion dictionary-connection
make-mode magit-annex magit-patch magit-subtree magit-gitignore
magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help
ediff-init ediff-util man calc-yank calccomp calc-alg calc-menu calc-ext
calc-aent calc calc-loaddefs rect calc-macs org-roam-dailies org-archive
tramp-cache time-stamp tramp-sh shortdoc cape-keyword cape-char nix-mode
nix-repl nix-shell nix-store nix-log nix-instantiate nix-shebang
nix-format nix goto-chg latexenc eimp solar cal-dst misc dabbrev
consult-org cal-move dcl-mode tempo epa-file password-store link-hint
expand-region yaml-mode-expansions subword-mode-expansions
text-mode-expansions cc-mode-expansions the-org-mode-expansions
python-el-fgallina-expansions nxml-mode-expansions html-mode-expansions
er-basic-expansions expand-region-core expand-region-custom csv-mode
yaml-mode ace-window puni pulse consult-imenu csharp-mode c-ts-common
cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs goto-addr rng-xsd xsd-regexp rng-cmpct
rng-nxml rng-valid nxml-mode nxml-outln nxml-rap visual-fill darkroom
markdown-mode edit-indirect ffap tex-mode org-ref org-ref-core openalex
request org-ref-glossary org-ref-bibtex sgml-mode avy doi-utils
org-ref-utils org-ref-export citeproc citeproc-itemgetters citeproc-cite
citeproc-biblatex citeproc-bibtex 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 queue ox-pandoc ht org-ref-misc-links
org-ref-label-link org-ref-ref-links org-ref-citation-links
org-ref-bibliography-links hydra lv bibtex-completion biblio
biblio-download biblio-dissemin biblio-ieee biblio-hal biblio-dblp
biblio-crossref biblio-arxiv timezone biblio-doi biblio-core parsebib
org-roam-export consult-org-roam consult-org-roam-buffer
org-roam-migrate org-roam-log org-roam-mode org-roam-capture org-roam-id
org-roam-node org-roam-db emacsql-sqlite-builtin sqlite org-roam-utils
org-roam-compat org-roam emacsql-sqlite emacsql-sqlite-common emacsql
emacsql-compiler vertico-directory consult qp pdf-sync pdf-annot
facemenu pdf-history pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist
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-outline
pdf-links pdf-isearch let-alist pdf-misc pdf-tools cus-edit cus-start
cus-load pdf-view pdf-cache pdf-info tq pdf-util pdf-macs network-stream
url-http url-gw nsm url-auth gnus-gravatar gravatar dns url-cache sort
smiley gnus-cite mm-archive mail-extr textsec uni-scripts idna-mapping
ucs-normalize uni-confusable textsec-check vterm tramp trampver
tramp-integration files-x tramp-message tramp-compat tramp-loaddefs
compile color term ehelp vterm-module term/xterm xterm vc-hg vc-bzr
vc-src vc-sccs vc-svn vc-cvs vc-rcs bug-reference magit-extras
git-rebase magit-bookmark magit-submodule magit-blame magit-stash
magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone
magit-remote magit-commit magit-sequence magit-notes magit-worktree
magit-tag magit-merge magit-branch magit-reset magit-files magit-refs
magit-status magit magit-repos magit-apply magit-wip magit-log
which-func imenu magit-diff smerge-mode diff git-commit log-edit add-log
magit-core magit-autorevert magit-margin magit-transient magit-process
with-editor comp comp-cstr comp-run comp-common magit-mode transient
benchmark magit-git magit-base magit-section cursor-sensor crm
reposition misearch multi-isearch cap-words superword subword tabify
mu4e mu4e-org mu4e-notification notifications mu4e-main smtpmail
mu4e-view mu4e-mime-parts mu4e-headers mu4e-thread mu4e-actions
mu4e-compose mu4e-draft gnus-msg mu4e-search mu4e-lists mu4e-bookmarks
mu4e-mark mu4e-message flow-fill mu4e-contacts mu4e-update mu4e-folders
mu4e-context mu4e-query-items mu4e-server mu4e-modeline mu4e-vars
mu4e-helpers mu4e-config mu4e-window bookmark pp ido mu4e-obsolete
help-fns radix-tree mule-util org-duration diary-lib diary-loaddefs
cal-iso vc-git org-appear org-bulletproof org-clock-dbus org-clock
org-modern org-num corg oc-basic disp-table ol-eww eww url-queue mm-url
ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015
mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku
url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud
nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec gnus-int
gnus-range org-mime ox-org message sendmail yank-media puny rfc822 mml
mml-sec epa derived 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 text-property-search
mail-utils range mm-util mail-prsvr wid-edit ol-docview doc-view
jka-compr image-mode exif wdired noccur dired-subtree dired-narrow
delsel dired-filter edmacro f dired-hacks-utils dired-aux dired-x dired
dired-loaddefs ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi
org-link-doi hl-line face-remap ob-ruby ob-R ob-python python
ob-plantuml ob-mermaid ob-shell shell warnings ox-gfm ox-md 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-latex ox-icalendar ox-html table
ox-ascii ox-publish ox org-attach org-protocol org-edna org-capture
org-agenda org-element org-persist xdg org-id org-element-ast inline
avl-tree generator org-refile org ob ob-tangle ob-ref ob-lob ob-table
ob-exp org-macro org-src reformatter sh-script smie treesit executable
ob-comint org-pcomplete pcomplete comint ansi-osc org-list org-footnote
org-faces org-entities time-date noutline outline ob-emacs-lisp ob-core
ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc
org-loaddefs thingatpt cal-menu calendar cal-loaddefs org-version
org-compat org-macs format-spec yasnippet whitespace
display-line-numbers dumb-jump popup xref project flycheck-indicator
flycheck find-func vlf-setup advice saveplace winum dash winner ring
which-key vertico-prescient marginalia vertico-multiform vertico repeat
minions jinx hl-todo diff-hl log-view pcvs-util vc-dir ewoc vc
vc-dispatcher autorevert filenotify envrc inheritenv diff-mode
track-changes ansi-color elec-pair ef-maris-dark-theme ef-themes
corfu-popupinfo corfu-prescient prescient char-fold corfu-history corfu
kmacro cape compat savehist cl-extra help-mode dbus xml server s async
auth-source-pass finder-inf ace-window-autoloads adaptive-wrap-autoloads
async-autoloads cape-autoloads catppuccin-theme-autoloads
clojure-mode-autoloads consult-org-roam-autoloads
consult-recoll-autoloads corfu-prescient-autoloads corfu-autoloads
csv-mode-autoloads darkroom-autoloads devdocs-autoloads
diff-hl-autoloads dired-filter-autoloads dired-narrow-autoloads
dired-subtree-autoloads dired-hacks-utils-autoloads
dracula-theme-autoloads dumb-jump-autoloads ef-themes-autoloads
eimp-autoloads elm-mode-autoloads embark-consult-autoloads
consult-autoloads embark-autoloads ement-autoloads emms-autoloads
envrc-autoloads erc-hl-nicks-autoloads ess-autoloads
expand-region-autoloads flycheck-indicator-autoloads
flycheck-rust-autoloads flycheck-autoloads git-annex-autoloads
go-mode-autoloads go-translate-autoloads goto-chg-autoloads
graphviz-dot-mode-autoloads haskell-mode-autoloads
highlight-indent-guides-autoloads hl-todo-autoloads http-autoloads
indium-autoloads company-autoloads inf-ruby-autoloads
inheritenv-autoloads jinx-autoloads js2-refactor-autoloads
js2-mode-autoloads json-mode-autoloads json-process-client-autoloads
json-snatcher-autoloads kaolin-themes-autoloads autothemer-autoloads
khardel-autoloads link-hint-autoloads magit-annex-autoloads
magit-autoloads pcase marginalia-autoloads markdown-mode-autoloads
mastodon-autoloads mermaid-mode-autoloads minions-autoloads
modus-themes-autoloads mu4e-autoloads multiple-cursors-autoloads
nextflow-mode-autoloads groovy-mode-autoloads nix-mode-autoloads
no-littering-autoloads noccur-autoloads nov-autoloads esxml-autoloads
kv-autoloads ob-mermaid-autoloads org-appear-autoloads
org-bulletproof-autoloads org-clock-csv-autoloads
org-clock-dbus-autoloads org-edna-autoloads org-mime-autoloads
org-modern-autoloads org-ref-autoloads citeproc-autoloads
bibtex-completion-autoloads biblio-autoloads biblio-core-autoloads
avy-autoloads hydra-autoloads lv-autoloads htmlize-autoloads
org-roam-autoloads emacsql-autoloads org-tree-slide-autoloads
orgalist-autoloads ox-gfm-autoloads ox-pandoc-autoloads ht-autoloads
org-autoloads package-lint-autoloads parsebib-autoloads pass-autoloads
f-autoloads password-store-otp-autoloads password-store-autoloads
pdf-tools-autoloads persist-autoloads plantuml-mode-autoloads
plz-autoloads poet-theme-autoloads popup-autoloads puni-autoloads
easy-mmode purescript-mode-autoloads queue-autoloads
rainbow-mode-autoloads reformatter-autoloads request-autoloads
resize-window-autoloads rg-autoloads rotate-autoloads ruby-end-autoloads
rust-mode-autoloads s-autoloads sage-shell-mode-autoloads rx
deferred-autoloads scad-mode-autoloads separedit-autoloads
edit-indirect-autoloads string-inflection-autoloads svg-lib-autoloads
tablist-autoloads taxy-magit-section-autoloads taxy-autoloads
magit-section-autoloads transient-autoloads tron-legacy-theme-autoloads
typescript-mode-autoloads vertico-prescient-autoloads vertico-autoloads
prescient-autoloads visual-fill-autoloads vlf-autoloads vterm-autoloads
weyland-yutani-theme-autoloads wgrep-autoloads winum-autoloads
dash-autoloads info with-editor-autoloads yaml-mode-autoloads
yasnippet-autoloads package browse-url 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 rmc iso-transl
tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win term/common-win
touch-screen pgtk-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads dbusbind inotify dynamic-setting system-font-setting
font-render-setting cairo gtk pgtk multi-tty move-toolbar
make-network-process native-compile emacs)

Memory information:
((conses 16 2319955 744147) (symbols 48 73676 45)
 (strings 32 374965 33553) (string-bytes 1 33650409)
 (vectors 16 272547) (vector-slots 8 5012203 622028)
 (floats 8 23040 16435) (intervals 56 134224 5722) (buffers 992 222))

-- 
Peter J. Jones (he/him)
blog: https://freerangebits.com
social: https://fosstodon.org/@devalot
code: https://github.com/pjones




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sat, 03 May 2025 08:57:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: "Peter J. Jones" <mlists <at> devalot.com>,
 Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sat, 03 May 2025 11:56:31 +0300
> From: "Peter J. Jones" <mlists <at> devalot.com>
> Date: Sun, 27 Apr 2025 14:58:50 +0200
> 
> When a function called from `editorconfig-get-local-variables-functions'
> returns an alist, but there is no .editorconfig file in the directory
> tree, the `editorconfig--get-dir-local-variables' function will pass nil
> to `file-name-directory', causing an error (stringp nil).
> 
> This happens because `editorconfig--get-dir-local-variables' calls
> `editorconfig-core-get-nearest-editorconfig', which returns nil, and
> passes that nil on to `file-name-directory'.
> 
> The following patch fixes the problem:
> 
> --- editorconfig.el.orig        2025-04-27 14:52:35.208707072 +0200
> +++ editorconfig.el     2025-04-27 14:53:19.423741999 +0200
> @@ -739,11 +739,10 @@
>        ;; settings from each file individually and let hack-dir-local merge
>        ;; them because hack-dir-local doesn't have the notion of "unset",
>        ;; and because the conversion of `indent_size' depends on `tab_width'.
> -      (when alist
> -        (cons
> -         (file-name-directory (editorconfig-core-get-nearest-editorconfig
> -                               buffer-file-name))
> -         alist)))))
> +      (when-let* ((alist)
> +                  (file (editorconfig-core-get-nearest-editorconfig
> +                         buffer-file-name)))
> +        (cons (file-name-directory file) alist)))))
>  
>  ;;;###autoload
>  (define-minor-mode editorconfig-mode

Thanks.

Stefan, any comments?  If the patch is okay, on what branch should it
be installed?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sat, 03 May 2025 14:15:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "Peter J. Jones" <mlists <at> devalot.com>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sat, 03 May 2025 10:13:53 -0400
> When a function called from
> `editorconfig-get-local-variables-functions' returns an alist, but
> there is no .editorconfig file in the directory tree,

Could you give a concrete example of how this can happen?

> the `editorconfig--get-dir-local-variables' function will pass nil
> to `file-name-directory', causing an error (stringp nil).
> This happens because `editorconfig--get-dir-local-variables' calls
> `editorconfig-core-get-nearest-editorconfig', which returns nil, and
> passes that nil on to `file-name-directory'.

Indeed.

> The following patch fixes the problem:
>
> --- editorconfig.el.orig        2025-04-27 14:52:35.208707072 +0200
> +++ editorconfig.el     2025-04-27 14:53:19.423741999 +0200
> @@ -739,11 +739,10 @@
>        ;; settings from each file individually and let hack-dir-local merge
>        ;; them because hack-dir-local doesn't have the notion of "unset",
>        ;; and because the conversion of `indent_size' depends on `tab_width'.
> -      (when alist
> -        (cons
> -         (file-name-directory (editorconfig-core-get-nearest-editorconfig
> -                               buffer-file-name))
> -         alist)))))
> +      (when-let* ((alist)
> +                  (file (editorconfig-core-get-nearest-editorconfig
> +                         buffer-file-name)))
> +        (cons (file-name-directory file) alist)))))

Without knowing why `editorconfig-core-get-nearest-editorconfig` returns
nil even though `alist` is non-nil, I can't judge if this is a real fix
or just a quick workaround.

Another quick workaround that has the advantage of not throwing away the
`alist` would be something like the patch below.


        Stefan


diff --git a/lisp/editorconfig.el b/lisp/editorconfig.el
index 7cdd79fa3b0..69e95c9a006 100644
--- a/lisp/editorconfig.el
+++ b/lisp/editorconfig.el
@@ -736,8 +736,10 @@ editorconfig--get-dir-local-variables
       ;; and because the conversion of `indent_size' depends on `tab_width'.
       (when alist
         (cons
-         (file-name-directory (editorconfig-core-get-nearest-editorconfig
-                               buffer-file-name))
+         (let ((ecfile (editorconfig-core-get-nearest-editorconfig
+                        buffer-file-name)))
+           ;; `ecfile' can be nil!?!  (bug#78097)
+           (file-name-directory (or ecfile buffer-file-name)))
          alist)))))
 
 ;;;###autoload





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sun, 04 May 2025 15:56:04 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "Peter J. Jones" <mlists <at> devalot.com>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sun, 04 May 2025 11:55:21 -0400
>> Could you give a concrete example of how this can happen?
>
> Yes.  I want to have `delete-trailing-whitespace' in a `before-save'
> hook by default but still allow editor config to remove it if
> "trim_trailing_whitespace" is set to false in the current project.  So I
> wrote the following function and put it in
> `editorconfig-get-local-variables-functions':
>
> (defun pjones:editorconfig-apply-trim-whitespace (props)
>   "Conditionally change the trim_trailing_whitespace setting.
>
> Enable whitespace trimming unless the editor configuration file
> explicitly disables it.  PROPS is the hash from the editor configuration
> file."
>   (when (null (gethash 'trim_trailing_whitespace props))
>     (puthash 'trim_trailing_whitespace "true" props)
>     (editorconfig--get-trailing-ws props)))

I see, thanks.

FWIW, the fact that `editorconfig-get-local-variables-functions' is run
when there are no `.editorconfig` files is an accident.

> Projects that don't have editor configuration files trigger the bug
> where nil is passed to `file-name-directory'.

IIUC the patch you sent silences the error but also has the effect that
AFAICT it does not enable `delete-trailing-whitespace` in those files
for which there is no `.editorconfig`, contrarily to what I understood
to be your goal.

Was that on purpose?


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sun, 04 May 2025 17:15:03 GMT) Full text and rfc822 format available.

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

From: "Peter J. Jones" <mlists <at> devalot.com>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sun, 04 May 2025 14:21:39 +0200
On Sat, May 03 2025, Stefan Monnier wrote:
>> When a function called from
>> `editorconfig-get-local-variables-functions' returns an alist, but
>> there is no .editorconfig file in the directory tree,
>
> Could you give a concrete example of how this can happen?

Yes.  I want to have `delete-trailing-whitespace' in a `before-save'
hook by default but still allow editor config to remove it if
"trim_trailing_whitespace" is set to false in the current project.  So I
wrote the following function and put it in
`editorconfig-get-local-variables-functions':

(defun pjones:editorconfig-apply-trim-whitespace (props)
  "Conditionally change the trim_trailing_whitespace setting.

Enable whitespace trimming unless the editor configuration file
explicitly disables it.  PROPS is the hash from the editor configuration
file."
  (when (null (gethash 'trim_trailing_whitespace props))
    (puthash 'trim_trailing_whitespace "true" props)
    (editorconfig--get-trailing-ws props)))

Projects that don't have editor configuration files trigger the bug
where nil is passed to `file-name-directory'.

Thank you.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Mon, 05 May 2025 07:19:03 GMT) Full text and rfc822 format available.

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

From: "Peter J. Jones" <mlists <at> devalot.com>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Mon, 05 May 2025 09:14:50 +0200
On Sun, May 04 2025, Stefan Monnier wrote:
>>> Could you give a concrete example of how this can happen?
>>
>> Yes.  I want to have `delete-trailing-whitespace' in a `before-save'
>> hook by default but still allow editor config to remove it if
>> "trim_trailing_whitespace" is set to false in the current project.  So I
>> wrote the following function and put it in
>> `editorconfig-get-local-variables-functions':
>>
>> (defun pjones:editorconfig-apply-trim-whitespace (props)
>>   "Conditionally change the trim_trailing_whitespace setting.
>>
>> Enable whitespace trimming unless the editor configuration file
>> explicitly disables it.  PROPS is the hash from the editor configuration
>> file."
>>   (when (null (gethash 'trim_trailing_whitespace props))
>>     (puthash 'trim_trailing_whitespace "true" props)
>>     (editorconfig--get-trailing-ws props)))
>
> I see, thanks.
>
> FWIW, the fact that `editorconfig-get-local-variables-functions' is run
> when there are no `.editorconfig` files is an accident.

The reason I was using `editorconfig-get-local-variables-functions' is
because both `editorconfig-after-apply-functions' and
`editorconfig-hack-properties-functions' are documented to behave that
way but are deprecated and `editorconfig-hack-properties-functions'
reports that `editorconfig-get-local-variables-functions' should be used
instead.

If none of these hooks are available for this purpose can you recommend
a way that I can achieve my goal?

>> Projects that don't have editor configuration files trigger the bug
>> where nil is passed to `file-name-directory'.
>
> IIUC the patch you sent silences the error but also has the effect that
> AFAICT it does not enable `delete-trailing-whitespace` in those files
> for which there is no `.editorconfig`, contrarily to what I understood
> to be your goal.
>
> Was that on purpose?

No.  I was starting to suspect that it wasn't working and after seeing
your patch I now know it's most definitely not working!  I was so deep
in the weeds trying to fix the "stringp nil" issue that I never went
back to see if my fix actually worked.  Sorry about that.

Your patch makes a lot more sense than the non-functional hack I first
posted.

Thanks for the help!

-- 
Peter J. Jones (he/him)
blog: https://freerangebits.com
social: https://fosstodon.org/@devalot
code: https://github.com/pjones




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Mon, 05 May 2025 13:57:01 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "Peter J. Jones" <mlists <at> devalot.com>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Mon, 05 May 2025 09:55:56 -0400
>> FWIW, the fact that `editorconfig-get-local-variables-functions' is run
>> when there are no `.editorconfig` files is an accident.
> The reason I was using `editorconfig-get-local-variables-functions' is
> because both `editorconfig-after-apply-functions' and
> `editorconfig-hack-properties-functions' are documented to behave that
> way but are deprecated and `editorconfig-hack-properties-functions'
> reports that `editorconfig-get-local-variables-functions' should be used
> instead.
> If none of these hooks are available for this purpose can you recommend
> a way that I can achieve my goal?

I'm afraid I don't have a ready answer for it.
Maybe something like:

    (add-hook 'change-major-mode-after-body-hook #'my-global-file-defaults)
    (defun my-global-file-defaults ()
      (when buffer-file-name
        (add-hook 'before-save-hook
                  #'editorconfig--delete-trailing-whitespace nil t)))

Obviously, Emacs lacks an official "delete-trailing-whitespace mode":
the above should not have to rely on an editorconfig-specific function.
🙁

> No.  I was starting to suspect that it wasn't working and after seeing
> your patch I now know it's most definitely not working!  I was so deep
> in the weeds trying to fix the "stringp nil" issue that I never went
> back to see if my fix actually worked.  Sorry about that.

We've all been there.  🙂
Thanks for confirming my suspicion.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sat, 17 May 2025 08:16:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: monnier <at> iro.umontreal.ca, "Peter J. Jones" <mlists <at> devalot.com>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sat, 17 May 2025 11:15:39 +0300
Ping! How should we proceed with this issue?  Was it resolved?

> Cc: 78097 <at> debbugs.gnu.org
> From: "Peter J. Jones" <mlists <at> devalot.com>
> Date: Mon, 05 May 2025 09:14:50 +0200
> 
> On Sun, May 04 2025, Stefan Monnier wrote:
> >>> Could you give a concrete example of how this can happen?
> >>
> >> Yes.  I want to have `delete-trailing-whitespace' in a `before-save'
> >> hook by default but still allow editor config to remove it if
> >> "trim_trailing_whitespace" is set to false in the current project.  So I
> >> wrote the following function and put it in
> >> `editorconfig-get-local-variables-functions':
> >>
> >> (defun pjones:editorconfig-apply-trim-whitespace (props)
> >>   "Conditionally change the trim_trailing_whitespace setting.
> >>
> >> Enable whitespace trimming unless the editor configuration file
> >> explicitly disables it.  PROPS is the hash from the editor configuration
> >> file."
> >>   (when (null (gethash 'trim_trailing_whitespace props))
> >>     (puthash 'trim_trailing_whitespace "true" props)
> >>     (editorconfig--get-trailing-ws props)))
> >
> > I see, thanks.
> >
> > FWIW, the fact that `editorconfig-get-local-variables-functions' is run
> > when there are no `.editorconfig` files is an accident.
> 
> The reason I was using `editorconfig-get-local-variables-functions' is
> because both `editorconfig-after-apply-functions' and
> `editorconfig-hack-properties-functions' are documented to behave that
> way but are deprecated and `editorconfig-hack-properties-functions'
> reports that `editorconfig-get-local-variables-functions' should be used
> instead.
> 
> If none of these hooks are available for this purpose can you recommend
> a way that I can achieve my goal?
> 
> >> Projects that don't have editor configuration files trigger the bug
> >> where nil is passed to `file-name-directory'.
> >
> > IIUC the patch you sent silences the error but also has the effect that
> > AFAICT it does not enable `delete-trailing-whitespace` in those files
> > for which there is no `.editorconfig`, contrarily to what I understood
> > to be your goal.
> >
> > Was that on purpose?
> 
> No.  I was starting to suspect that it wasn't working and after seeing
> your patch I now know it's most definitely not working!  I was so deep
> in the weeds trying to fix the "stringp nil" issue that I never went
> back to see if my fix actually worked.  Sorry about that.
> 
> Your patch makes a lot more sense than the non-functional hack I first
> posted.
> 
> Thanks for the help!
> 
> -- 
> Peter J. Jones (he/him)
> blog: https://freerangebits.com
> social: https://fosstodon.org/@devalot
> code: https://github.com/pjones
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sat, 17 May 2025 15:17:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: "Peter J. Jones" <mlists <at> devalot.com>
Cc: 78097 <at> debbugs.gnu.org
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sat, 17 May 2025 11:15:54 -0400
>>> FWIW, the fact that `editorconfig-get-local-variables-functions' is run
>>> when there are no `.editorconfig` files is an accident.
>> The reason I was using `editorconfig-get-local-variables-functions' is
>> because both `editorconfig-after-apply-functions' and
>> `editorconfig-hack-properties-functions' are documented to behave that
>> way but are deprecated and `editorconfig-hack-properties-functions'
>> reports that `editorconfig-get-local-variables-functions' should be used
>> instead.
>> If none of these hooks are available for this purpose can you recommend
>> a way that I can achieve my goal?
>
> I'm afraid I don't have a ready answer for it.
> Maybe something like:
>
>     (add-hook 'change-major-mode-after-body-hook #'my-global-file-defaults)
>     (defun my-global-file-defaults ()
>       (when buffer-file-name
>         (add-hook 'before-save-hook
>                   #'editorconfig--delete-trailing-whitespace nil t)))
>
> Obviously, Emacs lacks an official "delete-trailing-whitespace mode":
> the above should not have to rely on an editorconfig-specific function.
> 🙁

There is now a `delete-trailing-whitespace-mode` in `master, so the
above snippet can be updated to something like:

    (add-hook 'change-major-mode-after-body-hook #'my-global-file-defaults)
    (defun my-global-file-defaults ()
      (when buffer-file-name
        (if (fboundp 'delete-trailing-whitespace-mode) ;; Emacs≥31
            (delete-trailing-whitespace-mode 1)
          (add-hook 'before-save-hook
                    #'editorconfig--delete-trailing-whitespace nil t))))

Eli writes:
> Ping! How should we proceed with this issue?  Was it resolved?

I think the above provides the OP with a good alternative solution.
Their code relied on an accidental "feature" which is that
`editorconfig-get-local-variables-functions` is run even if we found no
`.editorconfig` settings.  I think that in the absence of such settings,
`editorconfig-mode` should have no effect, so I suggest we install the
patch below.

I'd lean towards pushing it to `master` rather than `emacs-30`.


        Stefan


2025-05-17  Stefan Monnier  <monnier <at> iro.umontreal.ca>

    * lisp/editorconfig.el (editorconfig--get-dir-local-variables):
    Don't run `editorconfig-get-local-variables-functions` when we found no
    EditorConfig settings since that hook's purpose is "to convert
    EditorConfig settings to their Emacs equivalent".


diff --git a/lisp/editorconfig.el b/lisp/editorconfig.el
index bfc8ef46ed3..3658343cfac 100644
--- a/lisp/editorconfig.el
+++ b/lisp/editorconfig.el
@@ -709,7 +708,8 @@ editorconfig--get-dir-local-variables
 Meant to be used on `hack-dir-local-get-variables-functions'."
   (when (stringp buffer-file-name)
     (let* ((props (editorconfig-call-get-properties-function buffer-file-name))
-           (alist (editorconfig--get-local-variables props)))
+           (alist (if (< 0 (hash-table-count props))
+                      (editorconfig--get-local-variables props))))
       ;; FIXME: If there's `/foo/.editorconfig', `/foo/bar/.dir-locals.el',
       ;; and `/foo/bar/baz/.editorconfig', it would be nice to return two
       ;; pairs here, so that hack-dir-local can give different priorities





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78097; Package emacs. (Sat, 17 May 2025 15:36:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 78097 <at> debbugs.gnu.org, mlists <at> devalot.com
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Sat, 17 May 2025 18:35:25 +0300
> Cc: 78097 <at> debbugs.gnu.org
> Date: Sat, 17 May 2025 11:15:54 -0400
> From:  Stefan Monnier via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> >>> FWIW, the fact that `editorconfig-get-local-variables-functions' is run
> >>> when there are no `.editorconfig` files is an accident.
> >> The reason I was using `editorconfig-get-local-variables-functions' is
> >> because both `editorconfig-after-apply-functions' and
> >> `editorconfig-hack-properties-functions' are documented to behave that
> >> way but are deprecated and `editorconfig-hack-properties-functions'
> >> reports that `editorconfig-get-local-variables-functions' should be used
> >> instead.
> >> If none of these hooks are available for this purpose can you recommend
> >> a way that I can achieve my goal?
> >
> > I'm afraid I don't have a ready answer for it.
> > Maybe something like:
> >
> >     (add-hook 'change-major-mode-after-body-hook #'my-global-file-defaults)
> >     (defun my-global-file-defaults ()
> >       (when buffer-file-name
> >         (add-hook 'before-save-hook
> >                   #'editorconfig--delete-trailing-whitespace nil t)))
> >
> > Obviously, Emacs lacks an official "delete-trailing-whitespace mode":
> > the above should not have to rely on an editorconfig-specific function.
> > 🙁
> 
> There is now a `delete-trailing-whitespace-mode` in `master, so the
> above snippet can be updated to something like:
> 
>     (add-hook 'change-major-mode-after-body-hook #'my-global-file-defaults)
>     (defun my-global-file-defaults ()
>       (when buffer-file-name
>         (if (fboundp 'delete-trailing-whitespace-mode) ;; Emacs≥31
>             (delete-trailing-whitespace-mode 1)
>           (add-hook 'before-save-hook
>                     #'editorconfig--delete-trailing-whitespace nil t))))
> 
> Eli writes:
> > Ping! How should we proceed with this issue?  Was it resolved?
> 
> I think the above provides the OP with a good alternative solution.
> Their code relied on an accidental "feature" which is that
> `editorconfig-get-local-variables-functions` is run even if we found no
> `.editorconfig` settings.  I think that in the absence of such settings,
> `editorconfig-mode` should have no effect, so I suggest we install the
> patch below.
> 
> I'd lean towards pushing it to `master` rather than `emacs-30`.

Fine by me, thanks.




Reply sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
You have taken responsibility. (Mon, 19 May 2025 22:35:03 GMT) Full text and rfc822 format available.

Notification sent to "Peter J. Jones" <mlists <at> devalot.com>:
bug acknowledged by developer. (Mon, 19 May 2025 22:35:03 GMT) Full text and rfc822 format available.

Message #37 received at 78097-done <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78097-done <at> debbugs.gnu.org, mlists <at> devalot.com
Subject: Re: bug#78097: 30.1; editorconfig can pass nil to file-name-directory
Date: Mon, 19 May 2025 18:34:47 -0400
> Fine by me, thanks.

Done, closing,


        Stefan





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 17 Jun 2025 11:24:13 GMT) Full text and rfc822 format available.

This bug report was last modified 14 days ago.

Previous Next


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