2012-11-26 16 views
10

私はEmacsのについて多くを知らないが、次のようにいくつかのグーグルの後、私はあることを私の.emacsファイルを編集した:私のコードで//コメントをインデントする方法を教えてください。

(setq c-default-style "bsd" c-basic-offset 4) 

私の目標は、4-間隔タブでオールマン・スタイルのインデントを取得することでした。これは期待どおりに動作しますが、私の//コメントは私のコードで字下げされていません。私がこれを変更する前に、//と入力すると、関数のコードの残りの部分に自動インデントされます。どうすればEmacsに自動インデントを//コメントにもらえますか?

私は上記.emacsファイルにc-indent-comments-syntactically-p 1を追加しようとしたが、それはそれを変更しませんでした...例えば

現在
int main() 
{ 
    // I'd like this line to be auto-indented to match the block 
    for (int i = 0; i < 10; ++i) 
    { 
     // And this line to be auto-indented to match the block 
     doStuff(); 
    } 
} 

TABは私//コメントをインデントしません、自動的にインデントされません。

答えて

8

現在のインデントの値を調べるには、該当する行にポイントを置き、C-c C-oを押します。関連するシンボルを好きなように調整します。

これは永久的ではありません。 .emacsに関数c-set-offsetの直接呼び出しを使用して、変更をグローバルに行います。

簡単な例:

int main() { 
    // 
} 

これは私のデフォルトのインデントです。カーソルを2行目に移動した後、関連するシンボルがcomment-introであることがわかります。

使用:

(c-set-offset 'comment-intro 6) 

は私が取得:オフセット

int main() { 
     // 
} 

はシンボルにわたって蓄積:

int main() { 
     // 
    { 
      // 
    } 
} 
+0

しかし、どのような場合には? – Cornstalks

+1

@Cornstalksのオフセットは、周囲のオフセットを基準にしています。私は例を追加しました。 – pmr

+0

上記の私の小さな '.emacs'ファイルがあれば、これを追加する正しい方法は何でしょうか? '(set-c-default-style" bsd "c-basic-offset 4(c-set-offset 'コメント - イントロ4))'を 'my'に置いてください。Emacs'ファイルはEmacs barfに 'Wrong type argument:symbolp、(c-set-offset(quote comment-intro)4) 'というエラーを返します。' – Cornstalks

1

叩くTABはまだ右、あなたのコメント行をインデント?あなたが見逃しているのは、二重スラッシュを自動的に認識して自動インデントをトリガーすることです。これは(c-electric-slash)によって実装されています。まず、スラッシュがまだそのコマンドにバインドされていることを確認してください。 C-h k /(キーストロークのスラッシュのヘルプ)。次に、c-electric-slashのドキュメントが表示されていると仮定して、それがどのような条件で禁止されているのかを理解するためにそれを読んでください。

+0

TABはコメントをインデントしなくなりました。私はそれを言いたい私の質問を編集します。 – Cornstalks

0

あなたは自分の〜/の.emacsファイルにfolllowing行を追加し、あなたのコードのスコープの同じalignementにコメントを入れたい場合は:それは、ネストされたブロックです

(c-set-offset 'comment-intro 0) 
関連する問題