Spec-Zone.ru › Elisp

Избыточные открывающие скобки

Первый шаг — найти не сбалансированную функцию 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 ничего не должен изменить.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Excess-Open.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API