[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#8095: dir-locals-directory-cache confusion
From: |
Glenn Morris |
Subject: |
bug#8095: dir-locals-directory-cache confusion |
Date: |
Tue, 22 Feb 2011 03:31:45 -0500 |
User-agent: |
Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) |
Package: emacs
Version: 23.2.94
There is some weirdness going on with caching of dir-locals files:
mkdir foo
cat <<EOF > foo/.dir-locals.el
((nil . ((sentence-end-double-space . t))))
EOF
emacs -q foo/.dir-locals.el
C-h v sentence-end-double-space
This variable is a directory local variable
from the file "/home/gm/tmp/foo/".
^^^^^^^^^^^^^^^^^^^^^^^
That's a directory, not a file. Then do:
M-: (setq dir-locals-directory-cache nil)
and repeat:
C-h v sentence-end-double-space
This variable is a directory local variable
from the file "/home/gm/tmp/foo/.dir-locals.el".
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OK, now it's a directory.
Analysis: dir-locals-find-file is either going to return a file (if it
did not find a matching entry in the cache), or a directory (if it did
find an entry in the cache).
Further comment: This line in dir-locals-find-file
(equal (nth 2 dir-elt)
(nth 5 (file-attributes (car dir-elt))))
compares the mtime element from the cache with the current mtime of the
*directory*. The mtime element in the cache is set by
dir-locals-read-from-file and is the mtime of the *file*.
So in summary there is some confusion between directory and files that
messes up the caching. The whole thing should be consistent about
whether it wants to refer to directories or files.
- bug#8095: dir-locals-directory-cache confusion,
Glenn Morris <=