GNU bug report logs - #8095
dir-locals-directory-cache confusion

Previous Next

Package: emacs;

Reported by: Glenn Morris <rgm <at> gnu.org>

Date: Tue, 22 Feb 2011 08:32:01 UTC

Severity: normal

Found in version 23.2.94

Fixed in version 24.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Glenn Morris <rgm <at> gnu.org>
To: 8095 <at> debbugs.gnu.org
Subject: bug#8095: dir-locals-directory-cache confusion
Date: Tue, 22 Feb 2011 03:31:45 -0500
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.




This bug report was last modified 14 years and 150 days ago.

Previous Next


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