unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks
@ 2023-01-19  6:03 Greg Pfeil
  2023-01-19 13:12 ` Michael Albinus
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Pfeil @ 2023-01-19  6:03 UTC (permalink / raw)
  To: 60943

--text follows this line--

I was having an issue where .dir-locals.el on remote machines weren’t getting picked up when they were a symlink. Local symlinks worked fine, and remote non-symlinks also worked.

Digging in, ‘tramp-handle-regular-file-p’ explicitly checks that the first character in ‘file-attribute-mode’ is ?-. However, for symlinks, that character will be ?l.

Modifying ‘dir-locals--all-files’ to check

  (or (file-regular-p f) (file-symlink-p f))

\(which is ostensibly redundant) instead of simply

  (file-regular-p f)

fixes the behavior, since TRAMP will now check with both ‘tramp-handle-file-regular-p’ and ‘tramp-handle-file-symlink-p’. The correct fix is to make ‘tramp-handle-file-regular-p’ match the behavior of ‘file-regular-p’.


In GNU Emacs 28.2 (build 1, aarch64-apple-darwin22.2.0, NS appkit-2299.30 Version 13.1 (Build 22C65))
Windowing system distributor 'Apple', version 10.3.2299
System Description:  macOS 13.1

Configured using:
'configure --prefix=/nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2
--disable-build-details --with-modules --with-ns --disable-ns-self-contained
--with-native-compilation'

Configured features:
ACL GLIB GMP GNUTLS JPEG JSON LIBXML2 MODULES NATIVE_COMP NOTIFY KQUEUE NS
PDUMPER PNG RSVG THREADS TIFF TOOLKIT_SCROLL_BARS ZLIB

Important settings:
  value of $EMACSLOADPATH: 
  value of $EMACSNATIVELOADPATH: /nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/native-lisp::
  value of $LC_ALL: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  dap-tooltip-mode: t
  dap-ui-many-windows-mode: t
  dap-ui-controls-mode: t
  dap-ui-mode: t
  dap-auto-configure-mode: t
  dap-mode: t
  which-key-mode: t
  treemacs-filewatch-mode: t
  treemacs-follow-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  recentf-mode: t
  paredit-mode: t
  bug-reference-prog-mode: t
  buffer-face-mode: t
  flyspell-mode: t
  global-tree-sitter-mode: t
  persp-mode: t
  highlight-doxygen-global-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  projectile-mode: t
  minibuffer-depth-indicate-mode: t
  magit-wip-initial-backup-mode: t
  magit-wip-before-change-mode: t
  magit-wip-after-apply-mode: t
  magit-wip-after-save-mode: t
  magit-wip-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  global-whitespace-mode: t
  whitespace-mode: t
  delete-selection-mode: t
  default-text-scale-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/Users/greg/Projects/Lisp-community/epresent/epresent hides /nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/epresent-20160411.201/epresent
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/site-start hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/site-lisp/site-start
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/transient-20221118.1443/transient hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/transient
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-exp hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-exp
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-emacs-lisp hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-emacs-lisp
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/oc hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/oc
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-css hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-css
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-lob hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-lob
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-irc hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-irc
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-forth hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-forth
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-macs hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-macs
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-version hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-version
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-scheme hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-scheme
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-C hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-C
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-capture hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-capture
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-ref hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-ref
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-clojure hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-clojure
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-mouse hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-mouse
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-ctags hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-ctags
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-entities hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-entities
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-archive hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-archive
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-screen hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-screen
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-bibtex hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-bibtex
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-haskell hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-haskell
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-table hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-table
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-eww hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-eww
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-man hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-man
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-org hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-org
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-num hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-num
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-plot hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-plot
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-rmail hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-rmail
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-awk hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-awk
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-groovy hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-groovy
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-octave hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-octave
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-faces hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-faces
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/oc-biblatex hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/oc-biblatex
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-colview hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-colview
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-R hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-R
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-refile hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-refile
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-timer hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-timer
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-mobile hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-mobile
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-fortran hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-fortran
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-shell hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-shell
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-perl hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-perl
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-sqlite hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-sqlite
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/oc-basic hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/oc-basic
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-sed hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-sed
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-list hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-list
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-ruby hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-ruby
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-eval hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-eval
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-habit hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-habit
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-clock hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-clock
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-goto hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-goto
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-html hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-html
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-src hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-src
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-lisp hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-lisp
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-eshell hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-eshell
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-ditaa hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-ditaa
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-pcomplete hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-pcomplete
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-lint hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-lint
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-latex hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-latex
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-sass hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-sass
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-tangle hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-tangle
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-calc hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-calc
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-java hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-java
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-icalendar hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-icalendar
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-mhe hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-mhe
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-attach-git hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-attach-git
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-md hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-md
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-beamer hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-beamer
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-element hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-element
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/oc-natbib hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/oc-natbib
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-protocol hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-protocol
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-gnuplot hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-gnuplot
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-tempo hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-tempo
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-latex hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-latex
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-w3m hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-w3m
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-id hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-id
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-man hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-man
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-doi hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-doi
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-feed hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-feed
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-julia hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-julia
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-lua hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-lua
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-table hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-table
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-ocaml hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-ocaml
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/oc-csl hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/oc-csl
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-gnus hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-gnus
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-indent hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-indent
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-lilypond hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-lilypond
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-matlab hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-matlab
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-datetree hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-datetree
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-docview hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-docview
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-python hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-python
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-makefile hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-makefile
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-duration hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-duration
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-agenda hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-agenda
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-dot hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-dot
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-js hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-js
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-publish hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-publish
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-inlinetask hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-inlinetask
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-org hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-org
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-keys hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-keys
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-core hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-core
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-compat hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-compat
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-odt hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-odt
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-info hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-info
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-plantuml hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-plantuml
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-eshell hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-eshell
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-ascii hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-ascii
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-loaddefs hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-loaddefs
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-koma-letter hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-koma-letter
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-maxima hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-maxima
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ol-bbdb hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ol-bbdb
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-macro hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-macro
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-sql hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-sql
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-attach hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-attach
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-processing hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-processing
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ox-texinfo hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ox-texinfo
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-crypt hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-crypt
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/org-footnote hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/org-footnote
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/org-9.5.5/ob-comint hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/org/ob-comint
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/flim-20221103.353/sasl hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/net/sasl
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/let-alist-1.0.6/let-alist hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/emacs-lisp/let-alist
/nix/store/7ssp9cyj0jnnkkw2cn894xb4pvjfx3d5-emacs-packages-deps/share/emacs/site-lisp/elpa/nadvice-0.3/nadvice hides /nix/store/kxdpgca4ybqb1jdf73gclzwd0qb8lk2l-emacs-28.2/share/emacs/28.2/lisp/emacs-lisp/nadvice

Features:
(shadow mel-q-ccl ccl modb-legacy modb-standard wl-fldmgr wl-template wl-demo
wl-thread wl-action wl wl-draft wl-folder elmo-nntp elmo-filter wl-summary
wl-refile wl-message wl-mime mime-play filename wl-e21 wl-highlight elmo-mime
mmelmo-buffer mmelmo-imap mmimap mmbuffer mmgeneric wl-address wl-util wl-vars
wl-version elmo-net elmo-cache elmo-map elmo-dop modb-generic elmo-flag
elmo-localdir elmo elmo-signal elmo-msgdb modb modb-entity elmo-date elmo-util
elmo-vars elmo-version mime-edit mime-image mime-view mime-conf calist invisible
inv-23 mime-setup mail-mime-setup semi-setup semi-def mime-parse mime luna
eword-encode eword-decode mel path-util pces pces-e20 pces-20 mime-def alist
mcs-e20 mcs-20 mcharset std11 pccl pccl-20 broken static apel-ver product
emacsbug sendmail tramp-adb tramp-ftp detached-list helm-color helm-comint
helm-elisp-package helm-find helm-font helm-imenu helm-man helm-ring helm-sys
helm-itunes helm-company helm-eshell completion flymake-proc flymake
electric-coin-company rustic-flycheck rustic-spellcheck rustic-expand rustic-lsp
rustic-playpen rustic-rustfix rustic-racer rustic-babel rustic-rustfmt
rustic-comint rustic-clippy rustic-doc rustic-popup rustic-cargo rustic-compile
rustic-interaction rustic rust-utils rust-mode xterm-color direnv
detached-eshell em-unix em-term term ehelp em-script em-prompt em-ls em-hist
em-pred em-glob em-cmpl em-dirs esh-var em-basic em-banner em-alias esh-mode
eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util magit-patch magit-subtree magit-gitignore tabify man rect vc-dir
helm-rg helm-xref sh-script executable timezone epa-file forge-list
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea
forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub let-alist
forge-notify forge-revnote forge-pullreq forge-issue forge-topic forge-post
forge-repo forge forge-core forge-db closql emacsql-sqlite emacsql
emacsql-compiler mail-extr url-http url-gw url-auth gravatar dns url-cache
python cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff
ediff-help ediff-init ediff-util tramp-cmds git-rebase org-inlinetask org-habit
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-tempo tempo org-protocol org-mouse org-mobile org-agenda
org-indent org-goto org-feed org-crypt org-capture org-attach org-id org-refile
org-num cl-print debug misearch multi-isearch apropos org-element avl-tree
ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-search eieio-opt speedbar ezimage dframe gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum shr kinsoku svg gnus-group gnus-undo gnus-start
gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo gnus-spec
gnus-int gnus-range gnus-win gnus nnheader ol-docview doc-view jka-compr
ol-bibtex ol-bbdb ol-w3m ol-doi org-link-doi org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list
org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval org-table
oc-basic bibtex ol org-keys oc org-compat org-macs org-loaddefs cal-menu
calendar cal-loaddefs help-fns radix-tree helm-command helm-elisp helm-eval
edebug backtrace helm-mode helm-misc detached-compile detached-extra helm-ls-git
lsp-diagnostics company-oddmuse company-keywords company-etags etags fileloop
generator company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-capf company-cmake company-semantic company-template
company-bbdb lsp-headerline lsp-icons lsp-modeline dap-mouse dap-ui gdb-mi gud
bui bui-list bui-info bui-entry bui-core bui-history bui-button bui-utils
cus-edit cus-start lsp-lens dap-mode dap-tasks dap-launch posframe dap-overlays
which-key lsp-ui lsp-ui-flycheck lsp-ui-doc goto-addr lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline lsp-ui-util view lsp-zig lsp-steep lsp-svelte lsp-sqls
lsp-ruby-syntax-tree lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-volar lsp-vetur
lsp-html lsp-verilog lsp-vala lsp-v lsp-typeprof lsp-ttcn3 lsp-toml
lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-remark
lsp-racket lsp-r lsp-purescript lsp-pylsp lsp-pyls lsp-pwsh lsp-php lsp-pls
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magik lsp-nix lsp-nim
lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua lsp-kotlin lsp-json
lsp-javascript lsp-idris lsp-haxe lsp-haskell lsp-groovy lsp-hack lsp-graphql
lsp-gleam lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint
lsp-erlang lsp-emmet lsp-elixir lsp-elm lsp-dockerfile lsp-docker yaml lsp-dhall
lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-treemacs
lsp-treemacs-generic lsp-treemacs-themes treemacs-treelib treemacs
treemacs-header-line treemacs-compatibility treemacs-mode treemacs-bookmarks
treemacs-tags treemacs-interface treemacs-persistence treemacs-filewatch-mode
treemacs-follow-mode treemacs-rendering treemacs-annotations treemacs-async
treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator
treemacs-scope pulse treemacs-faces treemacs-icons treemacs-themes
treemacs-core-utils pfuture hl-line treemacs-logging treemacs-customization
treemacs-macros lsp-semantic-tokens lsp-clangd dom lsp-beancount lsp-bash
lsp-ansible lsp-angular lsp-ada lsp-actionscript lsp-mode lsp-protocol yasnippet
xref spinner network-stream nsm markdown-mode color lv inline ht f f-shortdoc
shortdoc s ewoc nix-mode smie nix-repl nix-shell nix-store nix-log
nix-instantiate nix-shebang nix-format nix detached-shell detached notifications
image-file image-converter magit-extras recentf tree-widget wid-edit
helm-x-files helm-for-files helm-bookmark helm-adaptive helm-info magit-bookmark
bookmark helm-external helm-net magit-submodule magit-obsolete magit-popup
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 winner ffap tramp-archive
tramp-gvfs dbus paredit vc-mtn vc-hg vc-git vc-bzr vc-src vc-sccs vc-svn vc-cvs
vc-rcs vc-pijul xml vc vc-dispatcher bug-reference face-remap flyspell ispell
tree-sitter-langs tree-sitter-langs-build tar-mode arc-mode archive-mode pp
tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn
tsc-dyn-get dired-aux tsc-obsolete pinentry perspective ido highlight-doxygen
noutline outline helm-projectile helm-files image-dired image-mode exif
helm-tags helm-buffers helm-occur helm-grep helm-regexp helm-utils helm-locate
helm-help helm-types helm helm-global-bindings helm-easymenu helm-core
async-bytecomp helm-source helm-multi-match helm-lib async interim-faces
extended-faces flycheck-eldev flycheck find-func detached-init tramp-cache
tramp-sh tramp tramp-loaddefs trampver tramp-integration tramp-compat parse-time
iso8601 ls-lisp disp-table solarized-theme solarized-definitions projectile
project lisp-mnt grep compile ibuf-ext ibuffer ibuffer-loaddefs thingatpt
mb-depth magit-wip magit-log which-func imenu magit-diff smerge-mode diff
diff-mode git-commit log-edit message rmc puny dired dired-loaddefs rfc822 mml
mml-sec epa derived epg rfc6068 epg-config gnus-util rmail rmail-loaddefs
text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils
mailheader pcvs-util add-log magit-core magit-autorevert autorevert filenotify
magit-margin magit-transient magit-process with-editor shell pcomplete comint
ring server ansi-color magit-mode transient magit-git magit-base magit-section
format-spec crm dash compat-27 compat-26 compat compat-macs whitespace delsel
default-text-scale cus-load advice company edmacro kmacro pcase agenix delight
comp comp-cstr warnings cl-extra help-mode use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core files-x rx proof-site proof-autoloads info package
browse-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars
seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib iso-transl
tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese composite
emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help simple
abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads kqueue cocoa ns
multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 2208057 1680770)
(symbols 48 79990 0)
(strings 32 421330 136701)
(string-bytes 1 14226078)
(vectors 16 272175)
(vector-slots 8 4865570 2317918)
(floats 8 5264 4208)
(intervals 56 172935 14233)
(buffers 992 206))





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks
  2023-01-19  6:03 bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks Greg Pfeil
@ 2023-01-19 13:12 ` Michael Albinus
  2023-01-19 17:55   ` Greg Pfeil
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Albinus @ 2023-01-19 13:12 UTC (permalink / raw)
  To: Greg Pfeil; +Cc: 60943

[-- Attachment #1: Type: text/plain, Size: 1007 bytes --]

Greg Pfeil <greg@technomadic.org> writes:

Hi Greg,

> I was having an issue where .dir-locals.el on remote machines weren’t getting picked up when they were a symlink. Local symlinks worked fine, and remote non-symlinks also worked.
>
> Digging in, ‘tramp-handle-regular-file-p’ explicitly checks that the first character in ‘file-attribute-mode’ is ?-. However, for symlinks, that character will be ?l.
>
> Modifying ‘dir-locals--all-files’ to check
>
>   (or (file-regular-p f) (file-symlink-p f))
>
> \(which is ostensibly redundant) instead of simply
>
>   (file-regular-p f)

Indeed, there's a bug. Thanks for the report!

> fixes the behavior, since TRAMP will now check with both ‘tramp-handle-file-regular-p’ and ‘tramp-handle-file-symlink-p’. The correct fix is to make ‘tramp-handle-file-regular-p’ match the behavior of ‘file-regular-p’.

The appended patch fixes this. Eli, is it OK to push to the emacs-29 branch?

Best regards, Michael.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 688 bytes --]

diff --git a/lisp/tramp.el b/lisp/tramp.el
index 351def66..f5208cd9 100644
--- a/lisp/tramp.el
+++ b/lisp/tramp.el
@@ -4039,7 +4039,10 @@ Let-bind it when necessary.")
        ;; Sometimes, `file-attributes' does not return a proper value
        ;; even if `file-exists-p' does.
        (when-let ((attr (file-attributes filename)))
-	 (eq ?- (aref (file-attribute-modes attr) 0)))))
+	 (cond
+	  ((eq ?- (aref (file-attribute-modes attr) 0)))
+	  ((eq ?l (aref (file-attribute-modes attr) 0))
+	   (file-regular-p (file-truename filename)))))))

 (defun tramp-handle-file-remote-p (filename &optional identification connected)
   "Like `file-remote-p' for Tramp files."

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks
  2023-01-19 13:12 ` Michael Albinus
@ 2023-01-19 17:55   ` Greg Pfeil
  2023-01-20 10:56     ` Michael Albinus
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Pfeil @ 2023-01-19 17:55 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 60943

[-- Attachment #1: Type: text/plain, Size: 233 bytes --]

I think sockets (where the 0th char is ?s) are also considered regular files. Also, I think that patch checks whether the truename is a regular file, but I believe /all/ symlinks are considered regular.

How about this version?


[-- Attachment #2: tramp-file-regular-p.patch --]
[-- Type: application/octet-stream, Size: 584 bytes --]

diff --git a/lisp/tramp.el b/lisp/tramp.el
index 351def66..82fa2b61 100644
--- a/lisp/tramp.el
+++ b/lisp/tramp.el
@@ -4039,7 +4039,7 @@ Let-bind it when necessary.")
        ;; Sometimes, `file-attributes' does not return a proper value
        ;; even if `file-exists-p' does.
        (when-let ((attr (file-attributes filename)))
-	 (eq ?- (aref (file-attribute-modes attr) 0)))))
+	 (memq (aref (tramp-compat-file-attribute-modes attr) 0) '(?- ?l ?s)))))

 (defun tramp-handle-file-remote-p (filename &optional identification connected)
   "Like `file-remote-p' for Tramp files."

[-- Attachment #3: Type: text/plain, Size: 1366 bytes --]



It just changes the equality check to check for the set of valid values. If we had the mode as a number, we could just check the one bit for regular files (which I think is what ‘file-regular-p’ does).


> On Jan 19, 2023, at 06:12, Michael Albinus <michael.albinus@gmx.de> wrote:
> 
> Greg Pfeil <greg@technomadic.org> writes:
> 
> Hi Greg,
> 
>> I was having an issue where .dir-locals.el on remote machines weren’t getting picked up when they were a symlink. Local symlinks worked fine, and remote non-symlinks also worked.
>> 
>> Digging in, ‘tramp-handle-regular-file-p’ explicitly checks that the first character in ‘file-attribute-mode’ is ?-. However, for symlinks, that character will be ?l.
>> 
>> Modifying ‘dir-locals--all-files’ to check
>> 
>>  (or (file-regular-p f) (file-symlink-p f))
>> 
>> \(which is ostensibly redundant) instead of simply
>> 
>>  (file-regular-p f)
> 
> Indeed, there's a bug. Thanks for the report!
> 
>> fixes the behavior, since TRAMP will now check with both ‘tramp-handle-file-regular-p’ and ‘tramp-handle-file-symlink-p’. The correct fix is to make ‘tramp-handle-file-regular-p’ match the behavior of ‘file-regular-p’.
> 
> The appended patch fixes this. Eli, is it OK to push to the emacs-29 branch?
> 
> Best regards, Michael.
> 
> <Mail Attachment>


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks
  2023-01-19 17:55   ` Greg Pfeil
@ 2023-01-20 10:56     ` Michael Albinus
  2023-01-20 14:16       ` Greg Pfeil
  0 siblings, 1 reply; 6+ messages in thread
From: Michael Albinus @ 2023-01-20 10:56 UTC (permalink / raw)
  To: Greg Pfeil; +Cc: 60943

Greg Pfeil <greg@technomadic.org> writes:

Hi Greg,

> I think sockets (where the 0th char is ?s) are also considered regular
> files. Also, I think that patch checks whether the truename is a
> regular file, but I believe /all/ symlinks are considered regular.

No, neither sockets nor symlinks to directories count as regular
files. See the Elisp manual (info "(elisp) Kinds of Files")

A socket is an "other I/O device" according to the description. And
symlinks are regular files only, if they point to a regular file.

> It just changes the equality check to check for the set of valid
> values. If we had the mode as a number, we could just check the one
> bit for regular files (which I think is what ‘file-regular-p’ does).

You can always check yourself in Emacs with a local file. For example,
if you have a socket like "/run/user/1000/bus":

--8<---------------cut here---------------start------------->8---
(file-exists-p (concat (getenv "XDG_RUNTIME_DIR") "/bus"))
=> t

(file-attribute-modes (file-attributes (concat (getenv "XDG_RUNTIME_DIR") "/bus")))
=> "srw-rw-rw-"

(file-regular-p (concat (getenv "XDG_RUNTIME_DIR") "/bus"))
=> nil
--8<---------------cut here---------------end--------------->8---

Or

--8<---------------cut here---------------start------------->8---
(make-directory "/tmp/foo")
(file-attribute-modes (file-attributes "/tmp/foo"))
=> "drwxr-xr-x"

(make-symbolic-link "/tmp/foo" "/tmp/bar")
(file-attribute-modes (file-attributes "/tmp/bar"))
=> "lrwxrwxrwx"

(file-regular-p "/tmp/bar")
=> nil
--8<---------------cut here---------------end--------------->8---

for symbolic links.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks
  2023-01-20 10:56     ` Michael Albinus
@ 2023-01-20 14:16       ` Greg Pfeil
  2023-01-21 11:13         ` Michael Albinus
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Pfeil @ 2023-01-20 14:16 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 60943

Ah, I see it’s right there in the docs even! I had just glanced at the impl, saw S_ISREG in there and assumed. Thanks for the clarification.

-- 
Sent from my iPhone

> On Jan 20, 2023, at 03:56, Michael Albinus <michael.albinus@gmx.de> wrote:
> 
> Greg Pfeil <greg@technomadic.org> writes:
> 
> Hi Greg,
> 
>> I think sockets (where the 0th char is ?s) are also considered regular
>> files. Also, I think that patch checks whether the truename is a
>> regular file, but I believe /all/ symlinks are considered regular.
> 
> No, neither sockets nor symlinks to directories count as regular
> files. See the Elisp manual (info "(elisp) Kinds of Files")
> 
> A socket is an "other I/O device" according to the description. And
> symlinks are regular files only, if they point to a regular file.
> 
>> It just changes the equality check to check for the set of valid
>> values. If we had the mode as a number, we could just check the one
>> bit for regular files (which I think is what ‘file-regular-p’ does).
> 
> You can always check yourself in Emacs with a local file. For example,
> if you have a socket like "/run/user/1000/bus":
> 
> --8<---------------cut here---------------start------------->8---
> (file-exists-p (concat (getenv "XDG_RUNTIME_DIR") "/bus"))
> => t
> 
> (file-attribute-modes (file-attributes (concat (getenv "XDG_RUNTIME_DIR") "/bus")))
> => "srw-rw-rw-"
> 
> (file-regular-p (concat (getenv "XDG_RUNTIME_DIR") "/bus"))
> => nil
> --8<---------------cut here---------------end--------------->8---
> 
> Or
> 
> --8<---------------cut here---------------start------------->8---
> (make-directory "/tmp/foo")
> (file-attribute-modes (file-attributes "/tmp/foo"))
> => "drwxr-xr-x"
> 
> (make-symbolic-link "/tmp/foo" "/tmp/bar")
> (file-attribute-modes (file-attributes "/tmp/bar"))
> => "lrwxrwxrwx"
> 
> (file-regular-p "/tmp/bar")
> => nil
> --8<---------------cut here---------------end--------------->8---
> 
> for symbolic links.
> 
> Best regards, Michael.
> 





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks
  2023-01-20 14:16       ` Greg Pfeil
@ 2023-01-21 11:13         ` Michael Albinus
  0 siblings, 0 replies; 6+ messages in thread
From: Michael Albinus @ 2023-01-21 11:13 UTC (permalink / raw)
  To: Greg Pfeil; +Cc: 60943-done

Version: 29.1

Greg Pfeil <greg@technomadic.org> writes:

Hi Greg,

> Ah, I see it’s right there in the docs even! I had just glanced at the
> impl, saw S_ISREG in there and assumed. Thanks for the clarification.

No further comments, so I've pushed this to the emacs-29 branch. Closing
the bug.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-01-21 11:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-19  6:03 bug#60943: 28.2; ‘tramp-handle-file-regular-p’ misses symlinks Greg Pfeil
2023-01-19 13:12 ` Michael Albinus
2023-01-19 17:55   ` Greg Pfeil
2023-01-20 10:56     ` Michael Albinus
2023-01-20 14:16       ` Greg Pfeil
2023-01-21 11:13         ` Michael Albinus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).