spacemacs 中 .dir-locals 不起作用, emacs -Q 中起作用

我第一次尝试用 .dir-locals, 描述一下行为: 在 /Users/quebec/Playground/others_indexed/books/professional-cuda-c-programming/ 下我定义了 .dir-locals.el, 内容如下:

((nil . ((eval . (setq my/local-path  "/Users/quebec/Playground/others_indexed/books/professional-cuda-c-programming/" my/remote-path  "/HOME/scz0csz/professional-cuda-c-programming/"))))
(cuda-mode . ((eval . (setq my/local-path  "/Users/quebec/Playground/others_indexed/books/professional-cuda-c-programming/" my/remote-path "/HOME/scz0csz/professional-cuda-c-programming/"))))
 )

用 emacs -Q 打开 /Users/quebec/Playground/others_indexed/books/professional-cuda-c-programming/ 下的任意文件, my/local-pathmy/remote-path 都已经定义了. 但 spacemacs 中(我没有加载我的配置文件), 打开这个目录下的任意文件, my/local-pathmy/remote-path 都没有定义. 很迷惑. 请问大家, 这可能的原因是什么?

一些配置变量的值如下, 奇怪的是 dir-local-variables-alist 是空的. 还有另一间奇怪的事, 我故意在 .dirs-local 写出语法错误, revert-buffer 确实又会报错, 但是变量, 就是没有设置.

我记得有个 option 是直接忽略 file/dir local variable。你看一下?

发现和 这里 是同一个问题, 是 cuda-mode 本身的问题, 我真不知道怎么在 cuda-mode 基础上写 hook 使得它起作用. 我试过:

(defun my/hack-dir-locals-for-somes-modes ()
  (when (derived-mode-p 'cuda-mode)
    (hack-dir-local-variables-non-file-buffer))) ; 试过 (hack-dir-local-variables) 也不行
(add-hook 'prog-mode-hook #'my/hack-dir-locals-for-somes-modes)

不过完全不起作用.

于是我放弃了 cuda-mode, 另一个原因是 cuda-mode 下 imenu 也用不了. 我改了 auto-mode-alist, 让 .cu 和 .cuh 绑定到 c+±mode.

(assoc-delete-all "\\.cu\\'" auto-mode-alist)
(assoc-delete-all "\\.cuh\\'" auto-mode-alist)
(add-to-list 'auto-mode-alist '("\\.cu\\'" . c++-mode))
(add-to-list 'auto-mode-alist '("\\.cuh\\'" . c++-mode))

问题就这样不太漂亮地解决了.