Ich habe eine Emacs Lisp-Datei mit benutzerdefinierten Makros, die ich anders als Schriftart und eingerückt werden möchte. Der Code sieht so aus:Emacs pro Dateianpassung
(defmacro* when-let ((var value) &rest body)
`(let ((,var ,value))
(when ,var ,@body)))
(defun func()
(when-let (a 1)
a))
I when-let
als font-lock-keyword
und zerklüftet wie oben fontified wollen. Ich weiß, dass ich das in meiner .emacs-Datei machen kann, aber ich würde es vorziehen, es zu einer lokalen Verzeichnis- oder lokalen Dateianpassung zu machen. Das Problem besteht darin, dass lokale und lokale Dateianpassungen im Verzeichnis anscheinend auf das Festlegen von Variablen beschränkt sind. In meiner .emacs-Datei habe ich Folgendes.
(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)))))
Ich möchte dies in .dir-locals.el
, weil es nur in eine Datei gilt.
Zur Klarstellung sollten die obigen Codeblocks an der Spitze der Datei (en) stehen, auf die sie angewendet werden soll. Dies funktioniert für jede Art von Datei, solange sie in der Sprache der Datei als Kommentar angezeigt wird (z. B. in einer C++ - Datei, die ;;; könnte durch // ersetzt werden). – jwernerny
Ich erwarte, dass es überall hingehen kann, aber es ist typischer, einen lokalen Variablenblock wie diesen am * Ende * einer Datei zu platzieren.Datei-lokale Variablen am * top * einer Datei verwenden immer die andere Syntax (siehe 'C-h i g'' (emacs) Dateivariablen angeben ''RET'). – phils