19.3.1 Избыточно открытые скобки

Первый шаг — найти объявление defun, которое несбалансировано. Если есть избыточно открытая скобка, то для этого нужно перейти в конец файла и нажать C-u C-M-u (backward-up-list, см. Перемещение по скобкам в Руководство по GNU Emacs). Это переместит вас в начало первого несбалансированного defun.

Следующий шаг — точно определить, что не так. Убедиться в этом невозможно, кроме как изучив программу, но часто существующий отступ является подсказкой, где должны были находиться скобки. Самый простой способ использовать эту подсказку — это переотформатировать с помощью C-M-q (indent-pp-sexp, см. Отступ для нескольких строк в Руководство по GNU Emacs) и посмотреть, что произойдет. Но не делайте этого пока! Продолжайте читать.

Прежде чем это сделать, убедитесь, что в defun достаточно закрывающих скобок. В противном случае C-M-q выдаст ошибку или переотформатирует остаток всего файла до конца. Поэтому перейдите в конец defun и вставьте туда закрывающую скобку. Не используйте C-M-e (end-of-defun) для перехода туда, так как это тоже не сработает, пока defun не будет сбалансирован.

Теперь вы можете перейти в начало defun и нажать C-M-q. Обычно все строки от определенного места до конца функции сдвинутся вправо. Вероятно, в этой области не хватает закрывающей скобки или есть лишняя открывающая. (Однако не предполагайте, что это так; изучите код, чтобы убедиться.) Как только вы найдете расхождение, отмените C-M-q с помощью C-_ (undo), поскольку старый отступ, вероятно, соответствует предполагаемым скобкам.

После того как вы, по вашему мнению, исправили проблему, снова используйте C-M-q. Если старый отступ действительно соответствовал предполагаемой вложенности скобок, и вы вернули эти скобки, C-M-q не должен ничего изменить.