В Emacs, как мне использовать локальные переменные каталога для удаленных проектов? - PullRequest
7 голосов
/ 13 апреля 2011

Я использую TRAMP для подключения к удаленному серверу, и я хотел использовать некоторые локальные переменные каталога. Какие у меня варианты? Должен ли я использовать emacs-сервер и делать это таким образом, или я должен добавить локальные переменные каталога в мой файл .emacs? Есть ли способ заставить TRAMP искать файл .dir-locals.el?

Ответы [ 2 ]

5 голосов
/ 25 апреля 2013

Если вы используете Emacs 24.3 или новее, установите enable-remote-dir-locals на t.

4 голосов
/ 14 апреля 2011

Для Emacs 24.3 или новее см. Ответ Legoscia.

Для более ранних версий вы можете использовать следующий обходной путь из EmacsWiki :

Мы можем посоветовать ‘hack-dir-local-variables’ обойти это, если вы готовы нести связанные с этим затраты производительности (которые могут быть относительно минимален в некоторых ситуациях).

;; Enable directory local variables with remote files. This facilitates both
;; the (dir-locals-set-class-variables ...)(dir-locals-set-directory-class ...)
;; and the .dir-locals.el approaches.
(defadvice hack-dir-local-variables (around my-remote-dir-local-variables)
  "Allow directory local variables with remote files, by temporarily redefining
`file-remote-p' to return nil unconditionally."
  (flet ((file-remote-p (&rest) nil))
  ad-do-it))
(ad-activate 'hack-dir-local-variables)

Если вы используете классы каталогов вместо файла .dir-locals.el, вы должны установить класс с помощью обычного пути tramp. e.g.:

 (dir-locals-set-class-variables
  'read-only
  '((nil . ((buffer-read-only . t)))))

 (dir-locals-set-directory-class
  "/ssh:(user)@(host):/path/to/dir" 'read-only)
...