2009-04-08 12 views
1

私はemacsでC++の "for each"構造体を正しくフォーマットしようとしています。C++の各ステートメントのEmacsインデント

私は括弧は、以下の実施例の両方において、forfと整列されるようにする。両方の場合において

for each(Type a in b) 
     { //^c^s shows substatement-open 
      //... do stuff 
     } 

for(; ;) 
{ //^c^s shows substatement-open 
    //... do stuff 
} 

、[Ctrlキーを押しながらCはCtrl-S](または[Ctrlキーを押しながらCを使用してCTRL-O])の両方の開口{文字がタイプsubstatement-openであり、c-offsets-alistを見たとき私はsubstatement-open私はEmacsは、それがfor(;;)コマンドをインデントする方法と同様for each()コマンドをインデントすることができるどのように0

に等しいことを確認することを示しています?

答えて

6

おそらく、emacsは "++34"のように "for each"を認識していません(私はそうではありませんが、これはマイクロソフトの拡張機能ですか、プリプロセッサのハック?だから、それが「正しい」フォーマットではないのは不思議ではありません。

あなたはこのモードをハックしたり、同じメンテナを依頼することができます(しかし、これが適切なC++になることがない限り、私は期待することはできません)。


コメントから、私の括弧の質問への答えは以下のとおりです。

  • OPを約尋ねた正確な形式は、Microsoftが++拡張-Cを管理しています。
  • C++ 0xのが立って利用可能になりましBOOST_FOREACH
  • for(<type> <loopcounter> : <container>)

のような構文を持つコンテナの範囲であったループが含まれ、slink's answerから、モードのメンテナがでMicrosoftの構文をサポートしていることが表示されますがあります最新のバージョン...

+0

C++ 0xには範囲ベースのforループがあるようですが、これはその構文ではありません。 http://en.wikipedia.org/wiki/C%2B%2B0x#Range-based_for-loop –

+0

これはMS Visual Studioの拡張機能です:http://blogs.msdn.com/arich/archive/2004/09/08 /227139.aspx –

+0

http://www.boost.org/doc/libs/1_35_0/doc/html/foreach.html それぞれのブーストはポータブルな代替方法であり、有効なC++のように見えるため正しくフォーマットする必要があります'for each' – justinhj

2

私の場合 - Emacs 23.0.91 - c++-modeインデントfor eachブロックは通常のようにforループでした。

+0

私はemacs 22.3.1を使用しています。これはWindows上の最新バージョンです。しかし、大きなポイント。 –

+0

最新バージョンのcc-mode(5.31.6)を使用していますが、 –

関連する問題