C/C++開発者向けemacsの設定

emacsで C/C++ でコーディングしている開発者向けの emacs の設定です.
[F5]でビルド,[F4]でエラー行へジャンプといったことが出来,かなり便利です.

具体的には以下のような事が出来ます.

  • [F7]でコンパイル(バッファを全部保存して,make all します)
  • [F4]でコンパイルエラー行へジャンプ
  • [F1]でカーソル下の単語について マニュアルを開く
  • SHIFT+[F7] でリビルド(make clean all)
  • SHIFT+[F4] で一つ前のエラー行へジャンプ

設定は .emacs に以下の内容を追記するだけです.

(setq auto-mode-alist
      (append '(("\\.C$"  . c++-mode)
                ("\\.cc$" . c++-mode)
                ("\\.cpp$". c++-mode)
                ("\\.hh$" . c++-mode)
                ("\\.c$"  . c-mode)
                ("\\.h$"  . c++-mode))
              auto-mode-alist))

(add-hook 'c-mode-common-hook
     '(lambda ()
        (require 'vc-hooks)
        (setq completion-mode t)
        ;; make のオプションは聞いてこない
        (setq compilation-read-command nil)
        ;; make するとき 全バッファを自動的にsaveする
        (setq compilation-ask-about-save nil)
        (define-key c-mode-base-map [f1] 'manual-entry)
        (define-key c-mode-base-map [f4] 'next-error)
        (define-key c-mode-base-map [(shift f4)] 'previous-error)
         (define-key c-mode-base-map [f7] 'compile)
        (define-key c-mode-base-map [(shift f7)] 
          '(lambda () 
             (interactive)
             ;;(require 'compile)
             ;;(save-some-buffers (not compilation-ask-about-save) nil)
             (compile-internal "make clean all" "No more errors")))
      ))

キーアサインは昔の microsoft visual studio に合わせています.少し設定を替えれば,
Visual Studio .NET 風のキーバインドにも出来ます.

ただ,この設定は,内部で make all や make clean を実行しています.そのため Makefile を書かないと,動作しません.
Makefile の書き方については *1 *2 を参考にしてください.

また以下の書籍が参考になります.

入門 GNU Emacs 第3版
Debra Cameron James Elliott Marc Loy Eric Raymond Bill Rosenblatt
オライリー・ジャパン
売り上げランキング: 72135
おすすめ度の平均: 5.0
5 GNU Emacs/Mule
5 チュートリアル以後

Emacs Lispプログラミング入門
Robert J.Chassell
アスキー
売り上げランキング: 133751
おすすめ度の平均: 4.5
5 Emacs Lispの基本文法入門に最適
5 Emacs Lispを書く人の登竜門的本
4 Emacs Lisp