2

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-variableoncompilation-error-regexp-alistを実行すると、あるべきだと思う値が表示されます。しかし..コンパイルバッファのエラーは強調表示されず、M-x next-error機能しません。

代替テキスト

次のように、エラー正規表現値をcompilation-error-regexp-alistviaに追加するとsetq-default:

(setq-default compilation-error-regexp-alist
  '(
     ... jslint regexp here ...
     ... many other regexp's here...
   ))

...それで動作します。コンパイル バッファ内のエラーは適切に強調表示M-x next-errorされ、期待どおりに機能します。

代替テキスト

4

1 に答える 1

2

compileコマンドが設定したローカル値を継承するとは思わないcompilation-error-regexp-alist*compilation*解決策は、バッファー自体のフックをカスタマイズすることです。コンパイルモードフックとコンパイル開始フックを参照してください。

于 2010-03-17T21:01:13.397 に答える