emacsの設定 c言語の設定

備忘録備忘録。
emacsのインデントやらの設定。


Linuxカーネルいじる場合
ソースツリーの"Documentation/Codingstyle.txt"にCodinstyleとemacsの設定が書いてある。
設定する部分はこれ(2.6.31-rc1-tipより)。これをホームディレクトリ以下にある.emacsに書く。

(defun c-lineup-arglist-tabs-only (ignored)
  "Line up argument lists by tabs, not spaces"
  (let* ((anchor (c-langelem-pos c-syntactic-element))
         (column (c-langelem-2nd-pos c-syntactic-element))
         (offset (- (1+ column) anchor))
         (steps (floor offset c-basic-offset)))
    (* (max steps 1)
       c-basic-offset)))

(add-hook 'c-mode-common-hook
          (lambda ()
            ;; Add kernel style
            (c-add-style
             "linux-tabs-only"
             '("linux" (c-offsets-alist
                        (arglist-cont-nonempty
                         c-lineup-gcc-asm-reg
                         c-lineup-arglist-tabs-only))))))

(add-hook 'c-mode-hook
          (lambda ()
            (let ((filename (buffer-file-name)))
              ;; Enable kernel mode for the appropriate files
              (when (and filename
                         (string-match (expand-file-name "*")
                                       filename))
                (setq indent-tabs-mode t)
                (c-set-style "linux-tabs-only")))))

一部変更してすべてのcファイルに適用できるようにしてみた。
ってかemacs lispをよう理解していないからあまり自信なし。
これでOKっぽい。たぶん。