Я пытаюсь установить 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
не работает.
Если я добавлю значение регулярного выражения ошибки в compilation-error-regexp-alist
через setq-default
, например:
(setq-default compilation-error-regexp-alist
'(
... jslint regexp here ...
... many other regexp's here...
))
... тогда это работает. Ошибки в буфере компиляции должным образом подсвечиваются и M-x next-error
функционирует, как и ожидалось.