3

私はc++プロジェクトをビルドするためにsconsを使用しています。
次のスクリプトを使用して、sconsのエラーを正しく処理しています。

34;;; SCons builds into a 'build' subdir, but we want to find the errors
35;;; in the regular source dir.  So we remove build/XXX/YYY/{dbg,final}/ from the
36;;; filenames.
37(defun process-error-filename (filename)
38  (let ((case-fold-search t))
39    (setq f (replace-regexp-in-string
40             "[Ss]?[Bb]uild[\\/].*\\(final\\|dbg\\)[^\\/]*[\\/]" "" filename))
41    (cond ((file-exists-p f)
42           f)
43          (t filename))))
44
45(setq compilation-parse-errors-filename-function 'process-error-filename)  

それで。c++やsconsだけでなくemacsも使いたいです。しかし、Javaや他の言語でも。
この「process-error-filename」関数を実行しているときにのみ使用するようにemacsを設定する方法

M-x compile   
scons  

指図?

4

1 に答える 1

4

モードフックを使用できます
http://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html
http://www.gnu.org/software/emacs/manual/html_node/elisp/Creating- Buffer_002dLocal.html

(defun my-c++-mode-hook ()
  (set (make-local-variable
  'compilation-parse-errors-filename-function)
  'process-error-filename))
(add-hook 'c++-mode-hook 'my-c++-mode-hook)
于 2012-07-20T06:34:20.137 に答える