閉じ括弧が多すぎた場合は、まずファイルの先頭に移動し、C-u -1
C-M-u(引数に−1を指定したbackward-up-list)と入力して、最初のバランスの取れていないdefunの末尾を探してください。
次に、その defun の先頭に C-M-f (forward-sexp、The GNU Emacs
Manual の Expressions
を参照) と入力して、実際に対応する閉じ括弧を探してください。これにより、defun
が終了すべき位置よりも手前の場所にいることになります。その付近に、不要な閉じ括弧が見つかる可能性があります。
その時点で問題が見当たらない場合は、次に defun の先頭に C-M-q (indent-pp-sexp)
と入力してください。おそらく数行分が左にずれます。もしそうであれば、欠落している開き括弧や不要な閉じ括弧は、おそらくそれらの行の先頭付近にあるはずです。(ただし、必ずしもそうであるとは限りません。コードを確認して確かめてください。)不一致箇所が見つかったら、C-M-q を C-_ (undo) で元に戻してください。元のインデントは、意図した括弧に対して適切である可能性が高いためです。
問題が解決したと思ったら、再度 C-M-q を使用してください。元のインデントが実際には意図した括弧の入れ子構造に適合しており、かつそれらの括弧を元に戻したのであれば、C-M-q で何も変わることはありません。