В этом разделе описываются команды более высокого уровня для удаления текста, команды, предназначенные в первую очередь для пользователя, но полезные также в программах на Lisp.
Эта функция удаляет все пробелы и табуляции вокруг точки. Она возвращает
nil.
Если backward-only не равно nil, функция удаляет
пробелы и табуляции перед точкой, но не после нее.
В следующих примерах мы вызываем delete-horizontal-space четыре
раза, по одному разу в каждой строке, при этом точка находится между вторым и
третьим символами в строке каждый раз.
---------- Буфер: foo ---------- I ∗thought I ∗ thought We∗ thought Yo∗u thought ---------- Буфер: foo ----------
(delete-horizontal-space) ; Четыре раза.
⇒ nil
---------- Буфер: foo ----------
Ithought
Ithought
Wethought
You thought
---------- Буфер: foo ----------
Эта функция объединяет строку, на которой находится точка, с предыдущей строкой,
удаляя любой пробельный символ в месте соединения и в некоторых случаях заменяя его
одним пробелом. Если join-following-p не равно nil,
delete-indentation объединяет эту строку со следующей строкой. В противном
случае, если beg и end не равны nil,
эта функция объединяет все строки в выделенном регистре.
При интерактивном вызове join-following-p является префиментным
аргументом, а beg и end — соответственно, началом и
концом регистра, если он активен, иначе nil. Функция возвращает
nil.
Если есть префикс заполнения, и вторая из объединяемых строк начинается с этого
префикса, то delete-indentation удаляет префикс заполнения
перед объединением строк. См. Margins for Filling.
В приведенном ниже примере точка находится в строке, начинающейся со слова ‘events’, и не имеет значения, есть ли в предыдущей строке пробелы в конце.
---------- Буфер: foo ---------- When in the course of human ∗ events, it becomes necessary ---------- Буфер: foo ----------
(delete-indentation)
⇒ nil
---------- Буфер: foo ---------- When in the course of human∗ events, it becomes necessary ---------- Буфер: foo ----------
После объединения строк функция fixup-whitespace отвечает за
определение того, следует ли оставлять пробел в месте соединения.
Эта функция заменяет все горизонтальные пробельные символы вокруг точки
либо одним пробелом, либо отсутствием пробела, в зависимости от контекста. Она
возвращает nil.
В начале или в конце строки соответствующее количество пробелов равно нулю. Перед символом с синтаксисом закрывающей скобки или после символа с открывающей скобкой или синтаксисом префикса выражения также не подходит пробел. В противном случае подходит один пробел. См. Table of Syntax Classes.
В приведенном ниже примере fixup-whitespace вызывается в
первый раз с точкой перед словом ‘spaces’ в первой
строке. Для второго вызова точка находится непосредственно после ‘(’.
---------- Буфер: foo ---------- This has too many ∗spaces This has too many spaces at the start of (∗ this list) ---------- Буфер: foo ----------
(fixup-whitespace)
⇒ nil
(fixup-whitespace)
⇒ nil
---------- Буфер: foo ---------- This has too many spaces This has too many spaces at the start of (this list) ---------- Буфер: foo ----------
Эта команда заменяет любые пробелы и табуляции вокруг точки одним
пробелом или n пробелами, если указано n. Она
возвращает nil.
Эта функция удаляет пустые строки вокруг точки. Если точка находится в пустой строке с одной или более пустыми строками до или после нее, то удаляются все, кроме одной. Если точка находится в изолированной пустой строке, она удаляется. Если точка находится в непустой строке, команда удаляет все пустые строки, следующие за ней.
Пустая строка определяется как строка, содержащая только табуляции и пробелы.
delete-blank-lines возвращает nil.
Удаляет пробельные символы в конце регистра, определенного start и end.
Эта команда удаляет пробельные символы после последнего не-пробельного символа в каждой строке в регистре.
Если эта команда применяется ко всему буферу (т.е. вызывается
интерактивно с неактивным маркером или вызывается из Lisp с end
nil), она также удаляет все конечные строки в конце
буфера, если переменная delete-trailing-lines не равна
nil.