Spec-Zone.ru › Elisp

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

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

Команда: delete-horizontal-space &optional backward-only

Эта функция удаляет все пробелы и табуляции вокруг точки. Она возвращает nil.

Если backward-only не nil, функция удаляет пробелы и табуляции перед точкой, но не после точки.

В следующих примерах мы вызываем delete-horizontal-space четыре раза, один раз на каждой строке, каждый раз с точкой между вторым и третьим символами на каждой строке.

---------- Buffer: foo ----------
I ∗thought
I ∗     thought
We∗ thought
Yo∗u thought
---------- Buffer: foo ----------
(delete-horizontal-space)   ; Four times.
     ⇒ nil

---------- Buffer: foo ----------
Ithought
Ithought
Wethought
You thought
---------- Buffer: foo ----------
Команда: delete-indentation &optional join-following-p beg end

Эта функция соединяет строку, на которой находится точка, с предыдущей строкой, удаляя пробелы в месте соединения и в некоторых случаях заменяя их одним пробелом. Если join-following-p не nil, delete-indentation соединяет эту строку со следующей строкой вместо этого. В противном случае, если beg и end не nil, эта функция соединяет все строки в области, которую они определяют.

В интерактивном вызове join-following-p является префиксным аргументом, а beg и end — соответственно, начало и конец области, если она активна, в противном случае nil. Функция возвращает nil.

Если есть префикс заполнения, а вторая из соединяемых строк начинается с префикса, то delete-indentation удаляет префикс заполнения перед соединением строк. См. Поля.

В примере ниже точка расположена на строке, начинающейся с ‘events’, и не имеет значения, есть ли в предыдущей строке завершающие пробелы.

---------- Buffer: foo ----------
When in the course of human
∗    events, it becomes necessary
---------- Buffer: foo ----------

(delete-indentation)
     ⇒ nil

---------- Buffer: foo ----------
When in the course of human∗ events, it becomes necessary
---------- Buffer: foo ----------

После объединения строк функция fixup-whitespace отвечает за решение о том, оставить ли пробел в месте соединения.

Команда: fixup-whitespace

Эта функция заменяет все горизонтальные пробелы вокруг точки либо одним пробелом, либо без пробела в зависимости от контекста. Она возвращает nil.

В начале или конце строки соответствующее количество пробелов равно нулю. Перед символом с синтаксисом закрытой скобки или после символа с открытой скобкой или синтаксисом префикса выражения также нет пробела. В противном случае подходит один пробел. См. Таблица классов синтаксиса.

В примере ниже, fixup-whitespace вызывается в первый раз с точкой перед словом ‘spaces’ в первой строке. При втором вызове точка находится непосредственно после ‘(’.

---------- Buffer: foo ----------
This has too many     ∗spaces
This has too many spaces at the start of (∗   this list)
---------- Buffer: foo ----------
(fixup-whitespace)
     ⇒ nil
(fixup-whitespace)
     ⇒ nil
---------- Buffer: foo ----------
This has too many spaces
This has too many spaces at the start of (this list)
---------- Buffer: foo ----------
Команда: just-one-space &optional n

Эта команда заменяет все пробелы и табуляции вокруг точки одним пробелом или n пробелами, если n указано. Она возвращает nil.

Команда: delete-blank-lines

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

Пустой строкой считается строка, содержащая только табуляции и пробелы.

delete-blank-lines возвращает nil.

Команда: delete-trailing-whitespace &optional start end

Удалить завершающие пробелы в области, определяемой start и end.

Эта команда удаляет символы пробелов после последнего символа, не являющегося пробелом, в каждой строке в области.

Если эта команда действует на весь буфер (т.е., если она вызывается интерактивно без активного маркера или вызывается из Lisp с end nil), она также удаляет все завершающие строки в конце буфера, если переменная delete-trailing-lines не nil.

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/User_002dLevel-Deletion.html

Spec-Zone.ru

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