33.6 Удаление текста

Удаление означает удаление части текста в буфере без сохранения ее в кольце отмены (см. Кольцо отмены). Удаленный текст нельзя вставить, но его можно повторно вставить с помощью механизма отмены (см. Отмена). Некоторые функции удаления сохраняют текст в кольце отмены в некоторых особых случаях.

Все функции удаления работают с текущим буфером.

Команда: erase-buffer

Эта функция удаляет весь текст текущего буфера (не только доступную часть), оставляя его пустым. Если буфер доступен только для чтения, она выдает ошибку buffer-read-only; если часть текста в нем доступна только для чтения, она выдает ошибку text-read-only. В противном случае она удаляет текст без запроса подтверждения. Она возвращает nil.

Обычно удаление большого объема текста из буфера препятствует дальнейшей автоматической сохранению этого буфера, поскольку он уменьшился. Однако erase-buffer не делает этого; идея в том, что будущий текст не связан с предыдущим текстом, и его размер не должен сравниваться с размером предыдущего текста.

Команда: delete-region start end

Эта команда удаляет текст между позициями start и end в текущем буфере и возвращает nil. Если точка находилась внутри удаленной области, ее значение после этого становится start. В противном случае точка перемещается вместе с окружающим текстом, как и маркеры.

Функция: delete-and-extract-region start end

Эта функция удаляет текст между позициями start и end в текущем буфере и возвращает строку, содержащую только что удаленный текст.

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

Команда: delete-char count &optional killp

Эта команда удаляет count символов непосредственно после точки или перед точкой, если count отрицателен. Если killp не равно nil, то удаленные символы сохраняются в кольце отмены.

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

Возвращаемое значение всегда nil.

Команда: delete-backward-char count &optional killp

Эта команда удаляет count символов непосредственно перед точкой или после точки, если count отрицателен. Если killp не равно nil, то удаленные символы сохраняются в кольце отмены.

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

Возвращаемое значение всегда nil.

Команда: backward-delete-char-untabify count &optional killp

Эта команда удаляет count символов назад, заменяя табуляции пробелами. Когда следующий символ для удаления является табуляцией, он сначала заменяется соответствующим количеством пробелов для сохранения выравнивания, а затем вместо табуляции удаляется один из этих пробелов. Если killp не равно nil, то команда сохраняет удаленные символы в кольце отмены.

Преобразование табуляций в пробелы происходит только в том случае, если count положительно. Если оно отрицательно, удаляется ровно −count символов после точки.

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

Возвращаемое значение всегда nil.

Пользовательский опция: backward-delete-char-untabify-method

Эта опция определяет, как backward-delete-char-untabify должен обрабатывать пробельные символы. Возможные значения включают untabify, по умолчанию, что означает преобразование табуляции в несколько пробелов и удаление одного; hungry, что означает удаление всех табуляций и пробелов перед точкой одной командой; all, что означает удаление всех табуляций, пробелов и переводов строк перед точкой, и nil, что означает отсутствие специальной обработки для пробельных символов.