namespaceのインデント
namespace A { namespace B { namespace C { namespace D { namespace E { class hoge; }} class foo : D::E::hoge { }; }}}
いま仕事で書いてるコーディングスタイルはこうなんですが、emacsのデフォルトだとnamespaceのインデントが合いません。ちょっと調べたら意外と簡単そうなので書いてみました。
(defun my-c-namespace-indent (langelem) (save-excursion (if (or (looking-at "[ \t]*namespace[ \t{]") (looking-at "[ \t]*namespace[ \t]+[_a-zA-Z]") (looking-at "[ \t]*}")) 0 (if (progn (goto-char (cdr langelem)) (skip-chars-backward " \t") (bolp)) 4)))) (c-set-offset 'innamespace 'my-c-namespace-indent)
namespaceを閉じたり開いたりするときはインデントをゼロにして、それ以外は4なんですが行頭のnamespaceにしか反応しない。
うん、いい感じ。