我正在尝试编写一个Emacs主要模式,但它无法正常工作;具体来说,我的关键字没有显示在关键字字体中。我试过按照教程,但我一定做错了。我知道一点Lisp,但我不知道Emacs脚本。
我的Emacs模式脚本:
;; emacs mode for OldRope
;; does no work for some reason
(setq oldrope-directive-keywords-regexp (regexp-opt '("page" "link" "goto" "act" "end" "div" "span" "include")))
(defvar oldrope-font-lock-defaults '((
(oldrope-directive-keywords-regexp . font-lock-keyword-face))))
(define-derived-mode oldrope-mode fundamental-mode
"oldrope mode"
"Major mode for editing OldRope games"
(setq comment-start "/*")
(setq comment-end "*/")
(setq font-lock-defaults oldrope-font-lock-defaults))
(provide 'oldrope-mode)
测试文件:
$[page start]$ Hello $[link]$ Click me $[act]$ That is right. $[end]$
(对于上下文,这是https://github.com/martinellison/oldrope的一部分,但这与问题无关。)
答案 0 :(得分:2)
你需要这个 - 其余的都可以:
(defvar oldrope-font-lock-defaults
`(((,oldrope-directive-keywords-regexp . font-lock-keyword-face))))
只需引用您未评估的列表oldrope-directive-keywords-regexp
- 您的引用列表只是将该符号作为其汽车。
使用反引号(`
)加上逗号(,
)或(list (list (cons oldrope-directive-keywords-regexp 'font-lock-keyword-face)))
,您可以评估该变量并在结果列表中使用其值。