--- a/lisp/files.el +++ b/lisp/files.el @@ -3567,8 +3569,10 @@ (defun dir-locals-collect-variables (class-variables root variables) "Collect entries from CLASS-VARIABLES into VARIABLES. ROOT is the root directory of the project. Return the new variables list." - (let* ((file-name (buffer-file-name)) + (let* ((file-name (or (buffer-file-name) + ;; handle non-file buffers, too + default-directory)) (sub-file-name (if file-name ;; FIXME: Why not use file-relative-name? (substring file-name (length root)))))