[ C++で開発 ]
Emacsのデフォルトのc++-modeは、gnuスタイル設定となっています。
基本インデント量 | c-basic-offset | |
コメントのみの行 | c-comment-only-line-offset | |
関数の括弧 | 同桁 |
void f() { } |
制御構文の括弧 | インデント |
while (true) { } |
組み込みスタイルのインデント設定
gnu | k&r | bsd | stroustrup | whitesmith | ellemtel | cc-mode | |
基本インデント量 | 2 | 5 | TAB(8) | 4 | 1 | 3 | 4 |
デフォルトのスタイルを変更するには以下の方法があります。
M-x c-set-style RET stroustrup RET
;; C++ style (add-hook 'c++-mode-hook '(lambda() (c-set-style "ellemtel")))
インデントを実施させるのには、次の3つのモードがあります。
1.は、インデント量はすべてユーザが明示的に空白やTABコードを入れて行います。
2.は、[TAB]キーを押した場合にはその行が、[C-j]による改行を実施した場合には次の行がインデントされます。
3.は、中括弧、セミコロン、コロン、改行などを入力した時点でその行がインデントされ、さらに自動的に改行が挿入され、次の行のインデント位置にキャレットが移動します。
全自動インデントを指定する変数はc-auto-newlineです。
(setq c-auto-newline t) ; 全自動インデントを有効 (setq c-auto-newline nil) ; 全自動インデントを無効
半自動インデントを指定する変数はc-tab-always-indentです。
(setq c-tab-always-indent t) ; [TAB]キーでインデント実施 (setq c-tab-always-indent nil) ; [TAB] キーで、TABコードを入力
;; C++ style (add-hook 'c++-mode-hook '(lambda() (c-set-style "stroustrup") (setq indent-tabs-mode nil) ; インデントは空白文字で行う(TABコードを空白に変換) (c-set-offset 'innamespace 0) ; namespace {}の中はインデントしない (c-set-offset 'arglist-close 0) ; 関数の引数リストの閉じ括弧はインデントしない ))