Основные режимы
Основные режимы специализируют Emacs для редактирования или взаимодействия с определёнными типами текста. Каждый буфер имеет ровно один основной режим в любой момент. Каждый основной режим связан с командой основного режима, имя которой должно оканчиваться на «-режим». Эта команда отвечает за переключение в этот режим в текущем буфере, устанавливая различные переменные буфера, такие как локальная карта клавиш. См. Конвенции основных режимов. Обратите внимание, что в отличие от второстепенных режимов, нет способа «выключить» основной режим, вместо этого буфер должен быть переключен на другой. Однако вы можете временно приостановить основной режим и позже восстановить приостановленный режим, см. ниже.
Наименее специализированный основной режим называется Основным режимом, который не имеет определений или настроек переменных, специфичных для режима.
- Команда: fundamental-mode
Это команда основного режима для Основного режима. В отличие от других команд режимов, она не выполняет какие-либо хуки режима (см. Конвенции основных режимов), так как вы не должны настраивать этот режим.
- Функция: major-mode-suspend
Эта функция работает как
fundamental-mode, в том смысле, что она уничтожает все переменные локального буфера, но также записывает текущий основной режим, чтобы его можно было восстановить позднее. Эта функция иmajor-mode-restore(описанная далее) полезны, когда вам нужно поместить буфер в какой-то специализированный режим, отличный от того, который Emacs выбирает для него автоматически (см. Автоматический основной режим), но также вы хотели бы иметь возможность вернуться к исходному режиму позже.
- Функция: major-mode-restore &optional avoided-modes
Эта функция восстанавливает основной режим, записанный функцией
major-mode-suspend. Если основной режим не был записан, эта функция вызываетnormal-mode(см. нормальный режим), но пытается запретить выбор режимов в avoided-modes, если этот аргумент неnil.
Самый простой способ написать основной режим — использовать макрос define-derived-mode, который настраивает новый режим как вариант существующего основного режима. См. Производные режимы. Рекомендуется использовать define-derived-mode даже если новый режим не является очевидным производным от другого режима, так как он автоматически обеспечивает соблюдение многих соглашений об именовании. См. Основные основные режимы для общих режимов, от которых можно брать производные.
Стандартное дерево каталогов GNU Emacs Lisp содержит код нескольких основных режимов в файлах, таких как text-mode.el, texinfo.el, lisp-mode.el и rmail.el. Вы можете изучить эти библиотеки, чтобы увидеть, как написаны режимы.
- Пользовательская опция: major-mode
-
Локальное значение буфера этой переменной содержит символ текущего основного режима. Её значение по умолчанию содержит основной режим по умолчанию для новых буферов. Стандартное значение по умолчанию —
fundamental-mode.Если значение по умолчанию равно
nil, то при каждом создании Emacs нового буфера с помощью команды, такой как C-x b (switch-to-buffer), новый буфер помещается в основной режим ранее текущего буфера. В качестве исключения, если основной режим предыдущего буфера имеет свойство символаmode-classсо значениемspecial, новый буфер помещается в Основной режим (см. Конвенции основных режимов).
| • Конвенции основных режимов | Соглашения об именовании для карт клавиш и т. д. | |
| • Автоматический основной режим | Как Emacs автоматически выбирает основной режим. | |
| • Справка по режиму | Как использовать режим. | |
| • Производные режимы | Определение нового основного режима на основе другого основного режима. | |
| • Основные основные режимы | Режимы, от которых часто производятся другие режимы. | |
| • Хуки режима | Хуки, запускаемые в конце функций основного режима. | |
| • Режим табличного списка | Родительский режим для буферов, содержащих табличные данные. | |
| • Общие режимы | Определение простого основного режима, поддерживающего синтаксис комментариев и режим Font Lock. | |
| • Примеры основных режимов | Режим текста и режим Lisp. |
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/Major-Modes.html