Чтобы разобраться с избыточной закрывающей скобкой, сначала перейдите в начало
файла, затем введите C-u -1 C-M-u (backward-up-list
с аргументом −1), чтобы найти конец первой несбалансированной
defun.
Затем найдите фактическую соответствующую закрывающую скобку, введя C-M-f
(forward-sexp, см. Выражения в Руководство по GNU Emacs)
в начале этой defun. Это оставит вас где-то недалеко от места, где defun должна закончиться. Возможно, вы обнаружите ложную закрывающую скобку поблизости.
Если вы не видите проблемы в этой точке, следующим шагом будет ввод C-M-q (indent-pp-sexp) в начале defun.
Вероятно, ряд строк сдвинется влево; если это так, то пропущенная открывающая скобка или ложная закрывающая скобка, вероятно, находится рядом с первой из этих строк. (Однако не предполагайте, что это так; изучите код, чтобы убедиться.) Как только вы обнаружили несоответствие, отмените C-M-q
с помощью C-_ (undo), поскольку старая отбивка, вероятно, подходит для предполагаемых скобок.
После того как вы думаете, что исправили проблему, снова используйте C-M-q. Если старая отбивка действительно соответствует предполагаемой вложенности скобок, и вы восстановили эти скобки, C-M-q не должен ничего менять.