我正在尝试将compilation-error-regexp-alist
设置为我添加为模式挂钩的函数。
(defun cheeso-javascript-mode-fn ()
(turn-on-font-lock)
...bunch of other stuff
;; for JSLINT
(make-local-variable 'compilation-error-regexp-alist)
(setq compilation-error-regexp-alist
'(
("^[ \t]*\\([A-Za-z.0-9_: \\-]+\\)(\\([0-9]+\\)[,]\\( *[0-9]+\\))\\( Microsoft JScript runtime error\\| JSLINT\\): \\(.+\\)$" 1 2 3)
))
;;(make-local-variable 'compile-command)
(setq compile-command
(let ((file (file-name-nondirectory buffer-file-name)))
(concat "%windir%\\system32\\cscript.exe \\cheeso\\bin\\jslint.js " file)))
)
(add-hook 'javascript-mode-hook 'cheeso-javascript-mode-fn)
模式挂钩运行。我在模式挂钩工作中设置的各种东西。 compile-command
已设置。但由于某种原因,compilation-error-regexp-alist
值不会生效。
如果我稍后在M-x describe-variable
上执行了compilation-error-regexp-alist
,则会向我显示我认为它应具有的价值。但是..编译缓冲区中的错误没有突出显示,M-x next-error
不起作用。
alt text http://i40.tinypic.com/drb3g4.jpg
如果我通过compilation-error-regexp-alist
将错误正则表达式值添加到setq-default
,请执行以下操作:
(setq-default compilation-error-regexp-alist
'(
... jslint regexp here ...
... many other regexp's here...
))
...然后它有效。编译缓冲区中的错误被正确突出显示,M-x next-error
按预期运行。
答案 0 :(得分:2)
我不相信compile
命令会继承您为compilation-error-regexp-alist
设置的本地值。解决方案是为*compilation*
缓冲区本身定制一个钩子,参见compilation-mode-hook和compilation-start-hook。