次: , 前: Syntax Errors, 上: Syntax Errors


17.3.1 開き括弧の過剰

最初の手順は、括弧が対応していない関数定義を探すことです。 開き括弧が過剰であれば、ファイルの末尾に閉じ括弧を挿入し C-M-bbackward-sexp)を打ちます。 こうすると、括弧が対応していない関数定義の先頭へ移動します。 (そうしたら、C-<SPC> C-_ C-u C-<SPC>と打って、 当該箇所にマークを設定してから閉じ括弧の挿入を取り消し、 最終的にマークへ戻る。)

つぎの手順は、なにが悪いか正確に判断することです。 プログラムを調べる以外にこれを確実に行う方法はありませんが、 しばしば、既存の字下げが括弧のありかたを予想する鍵になります。 これを利用するもっとも簡単な方法はC-M-qで字下げし直し、 どのようになるか見ることです。 まだやらないでください! まず読み進んてください。

これを行うまえに、関数定義に充分な数の閉じ括弧があることを確認してください。 さもないと、C-M-qがエラーになったり、 ファイルの末尾までを字下げし直してしまいます。 ですから、関数定義の末尾へ移動して閉じ括弧を挿入しておきます。 C-M-eを使って移動しないでください。 というのは、関数定義の括弧の対応が取れていないと失敗するからです。

関数定義の先頭へ移動してC-M-qを打ちます。 通常、ある場所から関数の末尾までの行が右へずれます。 その場所の近くで、閉じ括弧が足りなかったり開き括弧が多すぎるのです。 (しかし、これが正しいと仮定してはならない。 コードを調べて確認すること。) 不具合箇所がみつかったならば、 意図した括弧に対しては古い字下げが適しているでしょうから C-_C-M-qをアンドゥします。

問題を解決できたと思ったら、再度C-M-qを使います。 古い字下げが意図した括弧の入れ子に対応していて、 必要な括弧を挿入できているならば、 C-M-qはなにも変えないはずです。