mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2026-09-10 07:46:51 -04:00
Fix project--clear-cache and project--value-in-dir in special case
* lisp/progmodes/project.el (project--clear-cache): Make sure to clear the 'project-vc-dir-locals' keys too. (project--value-in-dir): Predicate the cache lookup (and most importantly, write) on whether enable-dir-local-variables is non-nil. So its uses inside recursive 'project-try-vc--search' call do not not bust the value (bug#81317).
This commit is contained in:
parent
ba7d2b8232
commit
707b0ba0f4
|
|
@ -647,7 +647,9 @@ It is used when `non-essential' is non-nil.")
|
|||
(obarray-map
|
||||
(lambda (sym)
|
||||
(if (get sym 'project-vc)
|
||||
(put sym 'project-vc nil)))
|
||||
(put sym 'project-vc nil))
|
||||
(if (get sym 'project-vc-dir-locals)
|
||||
(put sym 'project-vc-dir-locals nil)))
|
||||
vc-file-prop-obarray))
|
||||
|
||||
(defun project-try-vc (dir)
|
||||
|
|
@ -967,13 +969,15 @@ DIRS must contain directory names."
|
|||
(defun project--value-in-dir (var dir)
|
||||
(alist-get
|
||||
var
|
||||
(let ((cached (project--get-cached dir 'project-vc-dir-locals)))
|
||||
(if (eq cached 'none)
|
||||
nil
|
||||
(or cached
|
||||
(let ((res (project--read-dir-locals dir)))
|
||||
(project--set-cached dir 'project-vc-dir-locals (or res 'none))
|
||||
res))))
|
||||
(and
|
||||
enable-dir-local-variables
|
||||
(let ((cached (project--get-cached dir 'project-vc-dir-locals)))
|
||||
(if (eq cached 'none)
|
||||
nil
|
||||
(or cached
|
||||
(let ((res (project--read-dir-locals dir)))
|
||||
(project--set-cached dir 'project-vc-dir-locals (or res 'none))
|
||||
res)))))
|
||||
(default-value var)))
|
||||
|
||||
(defun project--read-dir-locals (dir)
|
||||
|
|
|
|||
Loading…
Reference in a new issue