■ 複数行を整形する

インデント

CモードでC言語のソースを書いたり、LaTeXモードや野鳥モードでTeXのソースを書くと、 自動的に字下げしてくれる。 しかし、なんらかの理由により字下げがうまく行っていない場合があるかもしれない。 下の例は、全く字下げがされていないCのソースである。

#include <stdio.h>
int main() {
int a,b;
if (a == 1) {
if (b == 1) {
printf("Hello,world!\n");
} else {
printf("Good-bye,world!\n");
}
}
}

字下げしたい範囲(リージョン)を選択してから、M-x indent-region を実行すると次のように字下げしてくれる。これで、TABキーを連打しなくて良い。 ちなみに、バッファ全体を選択するには、C-x h(M-x mark-whole-buffer)。

#include <stdio.h>
int main() {
  int a,b;
  if (a == 1) {
    if (b == 1) {
      printf("Hello,world!\n");
    } else {
      printf("Good-bye,world!\n");
    }
  }
}

ただし、文法的に正しくないと、適切な字下げを行えず、 時にはひどい結果になることがあるので注意。

#include <stdio.h>
int main() {
  int a,b;
  if (a == 1) {
    if (b == 1) {
      printf("Hello,world!\n")
        printf("???")
        } else {
          printf("Good-bye,world!\n");
        }
  }
}

タブを空白に変換

Cのソースコードをemacsで開くとちゃんとインデントされてるのに, LaTeXの\verbatimで出力しようとすると正しく表示されないということもよくある. これは\verbatimの中にTAB文字が入ってる場合に起こる. そういうときはリージョンを選択してから,M-x untabifyとして TAB文字をスペースに変換してやればいい.