У меня есть файл Emacs Lisp с настраиваемыми макросами. Я хочу, чтобы шрифт и отступы отличались по-разному. Код выглядит следующим образом:Emacs Per File Customization
(defmacro* when-let ((var value) &rest body)
`(let ((,var ,value))
(when ,var ,@body)))
(defun func()
(when-let (a 1)
a))
Я хочу when-let
fontified как font-lock-keyword
и с отступом, как указано выше. Я знаю, что могу сделать это в моем файле .emacs, но я бы предпочел сделать его локальным или локальным. Проблема заключается в том, что локальные настройки локальных и локальных файлов, по-видимому, ограничены установкой переменных. В моем файле .emacs у меня есть следующее.
(add-hook 'emacs-lisp-mode-hook
(lambda()
(put 'when-let 'lisp-indent-function 1)
(font-lock-add-keywords nil
'(("(\\(when-let\\)\\>" 1
font-lock-keyword-face)))))
Я хочу это в .dir-locals.el
, потому что это относится только к одному файлу.
Как часть пояснения, приведенные выше блоки кода должны находиться в верхней части файла (ов), к которому вы хотите применить. Это будет работать для файлов любого типа, если оно отображается на языке файла как комментарий (например, в файле C++; ;;; может быть заменен на //). – jwernerny
Я ожидаю, что он может идти в любом месте, но более типично размещать локальные блоки переменных, подобные этому, в самом * конце * файла.Локальные переменные файла в * верхнем * файла неизменно используют другой синтаксис (см. 'C-h i g'' (emacs). Указание переменных файла' 'RET'. – phils