Emacs指定字体锁定规则

时间:2016-02-23 03:02:35

标签: emacs font-lock

我将解析技巧付诸实践。我试图在Emacs中编写一个编程模式,所以我可以利用语法高亮等功能。不幸的是,font-lock不起作用。在Google上搜索并按照教程发现没有结果。以下是我的代码。任何建议都表示赞赏。

;;;###autoload
(defgroup use-mode nil
  "Mode for editing Use source files."
  :group 'languages)

;;;###autoload
(defcustom use-mode-hook nil
  "Hook run when use-mode is started.")

(defvar use-mode-map (make-sparse-keymap)
"Keymap for use-mode.")

;;;###autoload
(add-to-list 'auto-mode-alist '("\\.use\\'" . use-mode))

(defvar use-keywords-1 '("use" . font-lock-keyword-face)
  "First level of font-lock in Use")

(defvar  use-font-lock-keywords use-keywords-1
  "Code highlighting.")

;;;###autoload
(define-derived-mode use-mode prog-mode "Use"
  "Major mode for editing Use source files."
  (setq font-lock-defaults '(use-font-lock-keywords)))

(provide 'use-mode)

1 个答案:

答案 0 :(得分:2)

定义font-lock关键字时,应提供条目列表。所以,如果你替换:

(defvar use-keywords-1 '("use" . font-lock-keyword-face)
  "First level of font-lock in Use")

通过以下方式,它将起作用:

(defvar use-keywords-1 '(("use" . font-lock-keyword-face))
  "First level of font-lock in Use")

请注意,除非您打算编写一个非常高级的系统,否则您不需要提供不同的级别,因此您可以删除*-1个变量。

(万一你还没有看到它,我想推荐一个我的软件包font-lock-studio。它是一个用于字体锁定关键字的交互式调试器。)