Emacs: compile-command Makefile の有無や major-mode に応じて設定
 2007.11.01

前回の記事でしたかったことは、ふつーに compile 自体が対応していました。 docstring にも書いてありますし。よく読め >自分 ミニバッファで compile-command を修正するかも、save-some-buffers するかどうかも、変数で制御できるんですね。prefix で反転もできるし。 また、compile-command は compie の中で eval されてるので、ただの文字列のみでなく S 式が記述できるんですね。 Makefile の有無や major-mode に応じた文字列を返すような S 式に setq-default しておけばよい、と。 ただ、setq-default した S 式が毎回評価されるのもあれ(*)なので、compile-command に compile-command を setq する S 式を設定しておくことにしてみました。 set-compile-command.el
(autoload 'set-compile-command "set-compile-command" nil t)
(make-variable-buffer-local 'compile-command)
(setq-default compile-command '(set-compile-command))
(setq compilation-read-command nil
      compilation-ask-about-save nil
      compile-command-mode-specific
      '((emacs-lisp-mode . ((flags . "-f ~/share/mk/elisp.mk")
			    (ext . ".elc")))))
(define-key my-prefix-map "C-c" 'compile)
shell-mode 等からタグジャンプしたい場合、 compilation-shell-minor-mode を使うのも手なわけですね。 ぃゃ、でも ffap がタグジャンプに対応しててくれてもいいと思うんだ… * だって 2 回 eval してるんですもん。 interactive 内で let しても、後で再利用できないからしょーがないんでしょうけど。
カテゴリー:Emacs