Tôi có một tệp Emacs Lisp với macro tùy chỉnh Tôi muốn được phân biệt và thụt lề khác nhau. Mã này trông giống như:Emacs Per File Tùy biến
(defmacro* when-let ((var value) &rest body)
`(let ((,var ,value))
(when ,var ,@body)))
(defun func()
(when-let (a 1)
a))
Tôi muốn when-let
fontified như một font-lock-keyword
và thụt vào như trên. Tôi biết tôi có thể làm điều này trong tập tin .emacs của tôi nhưng tôi muốn làm cho nó một thư mục địa phương hoặc tập tin tuỳ biến địa phương. Vấn đề là thư mục địa phương và tập tin tùy chỉnh địa phương dường như được giới hạn để thiết lập các biến. Trong tập tin .emacs của tôi, tôi có những điều sau đây.
(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)))))
Tôi muốn điều này trong .dir-locals.el
vì nó chỉ áp dụng cho một tệp.
Làm rõ một chút, các khối mã ở trên phải nằm ở đầu (các) tệp bạn muốn áp dụng. Điều này sẽ làm việc cho bất kỳ loại tệp nào, miễn là nó xuất hiện trong ngôn ngữ của tệp dưới dạng nhận xét (ví dụ: trong tệp C++, ;;; có thể được thay thế bằng //). – jwernerny
Tôi hy vọng nó có thể đi bất cứ nơi nào, nhưng nó là điển hình hơn để đặt một biến địa phương khối như thế này ở * rất * kết thúc của một tập tin.Các biến tập tin cục bộ tại * đầu * của một tập tin luôn sử dụng cú pháp khác (xem 'C-h i g'' (emacs) Chỉ định các biến tập tin '' RET'). – phils