Next: Excess Close, Previous: Syntax Errors, Up: Syntax Errors
最初の手順は、括弧が対応していない関数定義を探すことです。
開き括弧が過剰であれば、ファイルの末尾に閉じ括弧を挿入し
C-M-b(backward-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はなにも変えないはずです。