Tengo un archivo Emacs Lisp con macros personalizadas Quiero formatear y sangrar de forma diferente. El código es el siguiente:Personalización de Emacs por archivo
(defmacro* when-let ((var value) &rest body)
`(let ((,var ,value))
(when ,var ,@body)))
(defun func()
(when-let (a 1)
a))
Quiero when-let
fontified como font-lock-keyword
y sangría que el anterior. Sé que puedo hacer esto en mi archivo .emacs, pero prefiero que sea un directorio local o una personalización local de archivos. El problema es que las personalizaciones locales y locales de directorios parecen estar limitadas a variables de configuración. En mi archivo .emacs tengo lo siguiente.
(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)))))
Quiero esto en .dir-locals.el
porque sólo se aplica a un archivo.
Como aclaración, los bloques de código anteriores deben ir en la parte superior del archivo (s) al que desea que se aplique. Esto funcionará para cualquier tipo de archivo, siempre y cuando aparezca en el idioma del archivo como un comentario (por ejemplo, en un archivo C++, el ;;; podría reemplazarse por //). – jwernerny
Espero que pueda ir a cualquier parte, pero es más típico colocar un bloque de variables locales como este en el mismo * final * de un archivo.Las variables locales de archivo en el * top * de un archivo utilizan invariablemente la otra sintaxis (consulte 'C-h i g'' (emacs) Especificación de variables de archivo' 'RET'). – phils