Команды вставки пользовательского уровня
В этом разделе описаны команды более высокого уровня для вставки текста, предназначенные главным образом для пользователя, но также полезные в программах на 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