Next: Lispのインデントのカスタマイズ, Previous: プログラムの基本的なインデントコマンド, Up: プログラムのインデント [Contents][Index]
複数行のコードを、1度に再インデントしたいときがあるかもしれません。これを行う1つの方法は、マークを使う方法です。マークがアクティブでリージョンが空でないとき、TABはリージョン内の各行をインデントします。一方、コマンドC-M-\
(indent-region
)は、マークがアクティブか否かにかかわらず、リージョン内の各行をインデントします(インデントコマンドを参照してください)。
それらに加えて、Emacsはコードの大きな断片をインデントするために、以下のコマンドを提供します:
カッコでグループ化された、すべての行を再インデントします。
Fill a single paragraph in a defun, or reindent all the lines within that defun.
カッコでグループ化されたすべてを横にシフトして、最初の行が正しくインデントされるようにします。
リージョン内のすべての行を横にシフトしますが、コメントや文字列内で開始される行は変更しません。
1つのカッコでグループ化されたものを再インデントするには、ポイントをグループ化の前に配して、C-M-qとタイプします。これはグループ化されたものの全体的なインデント(たとえばグループ化が開始される行のインデント)は変更せずに、相対的なインデントを変更します。C-M-qで実行される関数は、Lispモードではindent-pp-sexp
、Cモードではc-indent-exp
、のようにメジャーモードに依存します。全体的なインデントも同様に訂正したい場合は、最初にTABをタイプします。
To reindent the entire defun around point, type M-q
(prog-fill-reindent-defun
). If point is in a comment or a string,
this command fills and indents the comment or string instead. What exactly
constitutes a comment, a string, or a defun depends on the major mode: the
bounds of a defun are decided by the variables
beginning-of-defun-function
and end-of-defun-function
(see List Motion in The Emacs Lisp Reference Manual), and the
filling mechanism is decided by fill-paragraph-function
(see Filling in The Emacs Lisp Reference Manual).
グループ内の相対的なインデントは好ましいが、それの最初の行のインデントが好ましくない場合は、その最初の行にポイントを移動してC-u TABとタイプします。Lisp、C、他のいくつかのメジャーモードでは、数引数を指定したTABは通常どおりカレント行をインデントしてから、カレント行で始まる、カッコでグループ化されたすべての行を同じ量で再インデントします。このコマンドは巧妙なので、文字列内で開始される行は変更しません。CモードのときはCプリプロセッサー行は変更しませんが、それらにアタッチされた継続行は再インデントします。
コマンドM-x
indent-code-rigidlyは、indent-rigidly
が行うように(インデントコマンドを参照してください)、リージョン内のすべての行を厳格(rigidly)にシフトします。このコマンドはリージョンが文字列内で開始される場合を除き、文字列内で開始される行のインデントは変更しません。プレフィクス引数は、インデントする列数です。