Spec-Zone.ru › Elisp

Основные режимы

Основные режимы специализируют Emacs для редактирования или обработки определённых видов текста. В каждый момент времени у каждого буфера ровно один основной режим. С каждым основным режимом связана команда основного режима, имя которой должно оканчиваться на «-mode». Эта команда переключает текущий буфер в данный режим, задавая различные локальные для буфера переменные, например локальную карту клавиш. См. Соглашения для основных режимов. Обратите внимание: в отличие от второстепенных режимов, основной режим нельзя «отключить»; вместо этого буфер нужно переключить в другой режим. Однако основной режим можно временно приостановить, а затем восстановить; см. ниже.

Наименее специализированный основной режим называется режимом Fundamental; в нём нет определений или настроек переменных, специфичных для режима.

Команда: fundamental-mode

Это команда основного режима для режима Fundamental. В отличие от команд других режимов, она не запускает хуки режима (см. Соглашения для основных режимов), поскольку этот режим не предназначен для настройки.

Функция: major-mode-suspend

Эта функция работает как fundamental-mode: она удаляет все локальные для буфера переменные, но также сохраняет сведения о действовавшем основном режиме, чтобы впоследствии его можно было восстановить. Эта функция и major-mode-restore (описанная далее) полезны, когда нужно поместить буфер в специализированный режим, отличный от того, который Emacs выбирает для него автоматически (см. Как Emacs выбирает основной режим), но при этом иметь возможность позднее вернуться к исходному режиму.

Функция: major-mode-restore &optional avoided-modes

Эта функция восстанавливает основной режим, сохранённый функцией major-mode-suspend. Если основной режим не был сохранён, функция вызывает normal-mode (см. normal-mode), но пытается не выбирать режимы из avoided-modes, если этот аргумент не равен nil.

Функция: clean-mode

При смене основного режима большинство локальных переменных очищается, но в буфере могут оставаться другие элементы (например, текстовые свойства и наложения). Буфер редко переключают из одного основного режима в другой (за исключением переключения из fundamental-mode во все остальные режимы), поэтому обычно это не вызывает беспокойства. Иногда бывает удобно (в основном при отладке проблемы в буфере) выполнить «полный сброс» буфера; для этого предназначен основной режим clean-mode. Он удаляет все локальные переменные (даже постоянно локальные), а также все наложения и текстовые свойства.

Самый простой способ написать основной режим — использовать макрос define-derived-mode, который настраивает новый режим как вариант существующего основного режима. См. Определение производных режимов. Мы рекомендуем использовать define-derived-mode, даже если новый режим явно не является производным от другого режима, поскольку этот макрос автоматически обеспечивает соблюдение многих соглашений по написанию кода. Список распространённых режимов, от которых можно создавать производные, см. в разделе Основные режимы.

У разработки основных режимов на основе библиотеки tree-sitter есть свои особенности и соглашения; см. Разработка основных режимов с помощью tree-sitter.

В стандартном дереве каталогов 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, новый буфер переключается в режим Fundamental (см. Соглашения для основных режимов).

  • Соглашения для основных режимов
  • Как Emacs выбирает основной режим
  • Получение справки об основном режиме
  • Определение производных режимов
  • Основные режимы
  • Хуки режимов
  • Режим Tabulated List
  • Общие режимы
  • Примеры основных режимов

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

Spec-Zone.ru

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