我的Emacs模式不突出显示关键字

时间:2015-12-10 02:42:15

标签: emacs

我正在尝试编写一个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的一部分,但这与问题无关。)

1 个答案:

答案 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))),您可以评估该变量并在结果列表中使用其值。