强调eval-after-load的错误用法

4
在使用eval-after-load时经常犯的错误是忘记引用表单。
(eval-after-load 'dired
  (progn
    ...
    ...))

(eval-after-load "foo" (let ...))

我该如何强调这样的错误?也许在表单没有引用时,将 eval-after-load 这个词标记为红色?
1个回答

1
我所知道的最简单方法是添加字体锁定关键字:
(font-lock-add-keywords 'lisp-mode
  '(("(\\(eval-after-load\\)\s+[^\s]+\s+(" 1 'font-lock-warning-face t)
    ("(\\(setq\\)\s+'" 1 'font-lock-warning-face t)))

要在lisp-mode及其所有派生模式中应用这些关键字:
(add-hook 'lisp-mode
  (lambda ()
    (font-lock-add-keywords nil
      '(("(\\(eval-after-load\\)\s+[^\s]+\s+(" 1 'font-lock-warning-face t)
        ("(\\(setq\\)\s+'" 1 'font-lock-warning-face t)))))

这个解决方案不支持跨多行的错误(就像您第一个示例中的那样),但它是一个开始。
更多信息可以在以下链接找到: http://www.gnu.org/software/emacs/manual/html_node/elisp/Search_002dbased-Fontification.html#Search_002dbased-Fontification

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接