Первый шаг — найти объявление 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 не должен ничего изменить.