cc-mode for MySQL

ここ1年くらいずっとEmacsのデフォルトのcc-modeを使っていたのだけれども、MySQL的なコーディング規約に微妙にあってなくて、手作業で直してたのですが、もういいかげん限界だーとおもっていろいろ調べていたら、MySQLのwebサイトにMySQL開発者的cc-mode設定例が載ってました。

URL:http://forge.mysql.com/wiki/MySQL_Internals_Coding_Guidelines

(require 'font-lock)
(require 'cc-mode)
(setq global-font-lock-mode t) ;;colors in all buffers that support it
(setq font-lock-maximum-decoration t) ;;maximum color
(c-add-style "MY"
 '("K&R"
   '("MY"
     (c-basic-offset . 2)
     (c-comment-only-line-offset . 0)
     (c-offsets-alist . ((statement-block-intro . +)
                         (knr-argdecl-intro . 0)
                         (substatement-open . 0)
                         (label . -)
                         (statement-cont . +)
                         (arglist-intro . c-lineup-arglist-intro-after-paren)
                         (arglist-close . c-lineup-arglist)
                         ))
     )))

(setq c-mode-common-hook '(lambda ()
                            (c-set-style "MY")
                            (setq tab-width 8)
                            (setq indent-tabs-mode t)
                            (setq comment-column 48)))

(c-set-style "MY")
(setq c-default-style "MY")

おぉ、楽だー。なんでもっと早くみつけなかったんだろ。。orz



と言ったものの、やっぱり細かいところで気に入らないところがでてきて・・・。

(add-hook 'c-mode-common-hook
          '(lambda ()
              (c-set-style "k&r")
              (setq c-basic-offset 2)))

いろいろ調べて、とりあえずこんな感じでごまかすことに。公式サイト設定だとtab幅が5になっちゃうんだよね。