GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Excess-Open.html ・ emacs-doc.conao3.com

19.3.1 開き括弧の過剰

最初のステップは、バランスが崩れている defun を見つけることです。開き括弧が余っている場合は、ファイルの末尾に移動して C-u C-M-u(backward-up-list、The GNU Emacs Manual の Moving by Parens を参照)を入力します。これにより、バランスが崩れている最初の defun の先頭に移動します。

次のステップは、具体的に何が問題なのかを突き止めることです。プログラムを解析する以外に確実な方法はありませんが、既存のインデントが、本来括弧があるべき場所を示す手がかりになることがよくあります。この手がかりを利用する最も簡単な方法は、C-M-q(indent-pp-sexp、The GNU Emacs ManualのMulti-line Indentを参照)で再インデントし、何が動くかを確認することです。ですが、まだこれは行わないでください! まずは読み進めてください。

この操作を行う前に、defun に閉じ括弧が十分にあることを確認してください。そうでない場合、C-M-q でエラーが発生するか、ファイルの末尾まで残りの部分すべてが再インデントされてしまいます。そこで、defun の末尾に移動し、そこに閉じ括弧を挿入してください。C-M-e (end-of-defun) を使って移動しようとしないでください。defun のバランスが取れるまで、それらも同様に機能しないためです。

これで、関数の先頭に移動して C-M-q と入力できます。通常、ある地点から関数の末尾までのすべての行が右にずれます。その地点の付近に、閉じ括弧の抜けや、不要な開き括弧があるはずです。(ただし、必ずしもそうであるとは限りません。コードを確認して確かめてください。)不整合箇所が見つかったら、C-M-q を C-_ (undo) で元に戻してください。元のインデントは、おそらく意図された括弧の位置に適しているためです。

問題が解決したと思ったら、再度 C-M-q を使用してください。元のインデントが実際には意図した括弧の入れ子構造に適合しており、それらの括弧を元に戻したのであれば、C-M-q で何も変わることはありません。