dポイントプレゼントキャンペーン実施中!

linuxでC言語を勉強しています。
emacsをいろいろなサイトを参考にしていじっているのですが、
(add-hook 'c-mode-common-hook
____________'(lambda ()
_________________(c-toggle-auto-hungry-state 1)
))
で自動改行+インデントをしています。

しかし、これだと
for(i=0;i<10;i++)
___{
_______...
___}
というふうになってしまいます。どうも私はそれが気に食いません。

できれば、
for(i=0;i<10;i++){
____...
}
となってほしいのです。
ただし、";"、"{"、"}"を入力した後には改行+インデントしてほしいです。

一度、
(define-key c-mode-base-map ";" 'newline-and-indent)
としてみたのですが、これだと、;が表示されずに改行、インデントされてしまい失敗でした。
elispについて詳しく知らないので教えてください。

A 回答 (1件)

ちょっと手元で実験してみましたが, 変数 c-hanging-braces-alist を適切に設定すればいいような気がします. 例えば


(c-toggle-auto-hungry-state 1) の次の行に
(setq c-hanging-braces-alist '((substatement-open after) (substatement-close before)))
を入れ, c-hanging-braces-alist の値を ((substatement-open after) (substatement-close before)) にするとこの例の場合はうまくいきそうです. もちろん, 他の場合で必要であれば「(substatement-open after)」みたいなものをもっと並べていくことになります. この変数をいじるだけなら大きな問題にはならないはずなので, ヘルプを見ながらいろいろと変えてみてはどうでしょうか.
この辺は大きくはスタイルに依存するので, 本当は新しいスタイルを作るべきなのかもしれません.
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまくいきました。

お礼日時:2009/03/18 13:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!