Spec-Zone.ru › Elisp

Команды вставки пользовательского уровня

В этом разделе описаны команды более высокого уровня для вставки текста, предназначенные главным образом для пользователя, но также полезные в программах на Lisp.

Команда: insert-buffer from-buffer-or-name

Эта команда вставляет всё доступное содержимое from-buffer-or-name (этот буфер должен существовать) в текущий буфер после точки. Она оставляет маркер после вставленного текста. Возвращаемое значение — nil.

Команда: self-insert-command count &optional char

Эта команда вставляет символ char (последний введённый символ) count раз перед точкой и возвращает nil. Большинство печатных символов привязаны к этой команде. При обычной работе self-insert-command — наиболее часто вызываемая функция в Emacs, но программы редко используют её, кроме как для установки в таблицу клавиш.

При интерактивном вызове count — это числовой аргумент-префикс.

При автоповторе символ ввода преобразуется с помощью translation-table-for-input. См. Преобразование символов.

Эта команда вызывает auto-fill-function, если она не-nil и вставляемый символ находится в таблице auto-fill-chars (см. Автоматическое форматирование).

Эта команда выполняет раскрытие сокращений, если включён режим Abbrev и вставляемый символ не имеет синтаксиса символа слова. (См. Сокращения и их раскрытие и Таблица классов синтаксиса.) Она также отвечает за вызов blink-paren-function, если вставляемый символ имеет синтаксис закрывающей скобки (см. Мигание скобок).

Последнее, что делает эта команда, — запускает хук post-self-insert-hook. Например, его можно использовать для автоматического изменения отступов текста по мере его ввода. Функции в этом хуке могут использовать last-command-event (см. Информация из цикла команд), чтобы получить доступ к только что вставленному символу.

Если какой-либо функции в этом хуке нужно действовать с областью (см. Область), она должна убедиться, что режим удаления выделенного фрагмента (см. Удаление выделенного фрагмента в Руководстве GNU Emacs) не удалит область до вызова функций post-self-insert-hook. Для этого нужно добавить в self-insert-uses-region-functions функцию, возвращающую nil; это специальный хук, сообщающий режиму удаления выделенного фрагмента, что область удалять не следует.

Не пытайтесь подменить собственным определением стандартное определение self-insert-command. Цикл команд редактора обрабатывает эту функцию особым образом.

Команда: newline &optional number-of-newlines interactive

Эта команда вставляет символы новой строки в текущий буфер перед точкой. Если задан number-of-newlines, вставляется указанное количество символов новой строки. При интерактивном вызове number-of-newlines — это числовой аргумент-префикс.

Эта команда вызывает self-insert-command для вставки символов новой строки; впоследствии она может разбить предшествующую строку, вызвав auto-fill-function (см. Автоматическое форматирование). Обычно auto-fill-function вставляет символ новой строки; поэтому в данном случае общий результат — вставка двух символов новой строки в разных местах: один в точке, а другой раньше в строке. newline не выполняет автоматическое форматирование, если number-of-newlines не-nil.

Эта команда не запускает хук post-self-insert-hook, если только она не вызвана интерактивно или interactive не-nil.

Эта команда устанавливает отступ до левого поля, если оно не равно нулю. См. Поля для форматирования.

Возвращаемое значение — nil.

Команда: ensure-empty-lines &optional number-of-empty-lines

Эту команду можно использовать, чтобы обеспечить наличие заданного количества пустых строк перед точкой. (Здесь «пустая строка» определяется как строка без символов; строка с пробелами пустой не считается.) По умолчанию команда обеспечивает наличие одной пустой строки перед точкой.

Если точка находится не в начале строки, сначала вставляется символ новой строки. Если перед точкой больше пустых строк, чем указано, их количество уменьшается. В противном случае оно увеличивается до заданного.

Переменная: overwrite-mode

Эта переменная определяет, включён ли режим замены. Значение должно быть overwrite-mode-textual, overwrite-mode-binary или nil. overwrite-mode-textual задаёт текстовый режим замены (символы новой строки и табуляции обрабатываются особым образом), а overwrite-mode-binary задаёт двоичный режим замены (символы новой строки и табуляции обрабатываются как любые другие символы).

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/Commands-for-Insertion.html

Spec-Zone.ru

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