Заполнение
Заполнение означает регулировку длины строк (перемещением переносов строк) таким образом, чтобы они были почти (но не больше) заданной максимальной ширины. Кроме того, строки могут быть выровнены, что означает вставку пробелов для точного выравнивания левых и/или правых краев. Ширина контролируется переменной fill-column. Для удобства чтения строки не должны быть длиннее примерно 70 столбцов.
Вы можете использовать режим автоматического заполнения (см. Автоматическое заполнение), чтобы автоматически заполнять текст по мере вставки, но изменения в существующем тексте могут привести к его неправильному заполнению. В этом случае необходимо явно выполнить заполнение текста.
Большинство команд в этом разделе возвращают значения, не имеющие смысла. Все функции, выполняющие заполнение, учитывают текущий левый край, текущий правый край и текущий стиль выравнивания (см. Поля). Если текущий стиль выравнивания равен none, функции заполнения фактически ничего не делают.
Несколько функций заполнения имеют аргумент justify. Если он не nil, это запрос на определенный вид выравнивания. Он может быть left, right, full, или center, чтобы запросить конкретный стиль выравнивания. Если он равен t, это означает использование текущего стиля выравнивания для этой части текста (см. current-justification, ниже). Любое другое значение обрабатывается как full.
При вызове функций заполнения интерактивно использование префиксного аргумента подразумевает значение full для justify.
- Команда: fill-paragraph &optional justify region
-
Эта команда заполняет абзац в или после текущей позиции. Если justify не
nil, каждая строка также выравнивается. Она использует обычные команды перемещения по абзацам для поиска границ абзаца. См. Абзацы в Руководстве по GNU Emacs.Когда region не
nil, если режим временной метки включён и метка активна, эта команда вызываетfill-regionдля заполнения всех абзацев в области, вместо заполнения только текущего абзаца. Когда эта команда вызывается интерактивно, region равноt.
- Команда: fill-region start end &optional justify nosqueeze to-eop
-
Эта команда заполняет каждый из абзацев в области от start до end. Она также выравнивает, если justify не
nil.Если nosqueeze не
nil, это означает, что пробелы, кроме переносов строк, остаются нетронутыми. Если to-eop неnil, это означает, что заполнение продолжается до конца абзаца — или до следующего жёсткого переноса строки, еслиuse-hard-newlinesвключён (см. ниже).Переменная
paragraph-separateуправляет тем, как отличать абзацы. См. Стандартные регулярные выражения.
- Команда: fill-individual-paragraphs start end &optional justify citation-regexp
-
Эта команда заполняет каждый абзац в области в соответствии с его индивидуальным префиксом заполнения. Таким образом, если строки в абзаце были отступом с пробелами, заполненный абзац останется отступленным таким же образом.
Первые два аргумента, start и end, — это начало и конец области, подлежащей заполнению. Третий и четвёртый аргументы, justify и citation-regexp, — необязательные. Если justify не
nil, абзацы выравниваются, а также заполняются. Если citation-regexp неnil, это означает, что функция работает с сообщением электронной почты и поэтому не должна заполнять строки заголовка. Если citation-regexp является строкой, она используется как регулярное выражение; если она соответствует началу строки, эта строка обрабатывается как маркер цитаты.Обычно
fill-individual-paragraphsрассматривает каждое изменение отступа как начало нового абзаца. Еслиfill-individual-varying-indentнеnil, то только разделительные строки отделяют абзацы. Этот режим может обрабатывать отступы абзацев с дополнительным отступом в первой строке.
- Пользовательская опция: fill-individual-varying-indent
Эта переменная изменяет действие
fill-individual-paragraphsкак описано выше.
- Команда: fill-region-as-paragraph start end &optional justify nosqueeze squeeze-after
-
Эта команда рассматривает область текста как один абзац и заполняет его. Если область состояла из нескольких абзацев, пустые строки между абзацами удаляются. Эта функция выравнивает, а также заполняет, когда justify не
nil.Если nosqueeze не
nil, это означает, что пробелы, кроме переносов строк, остаются нетронутыми. Если squeeze-after неnil, это указывает на позицию в области, и означает, что пробелы, кроме переносов строк, должны оставаться нетронутыми перед этой позицией.В режиме адаптивного заполнения эта команда вызывает
fill-context-prefixдля выбора префикса заполнения по умолчанию. См. Адаптивное заполнение.
- Команда: justify-current-line &optional how eop nosqueeze
-
Эта команда вставляет пробелы между словами текущей строки таким образом, чтобы строка заканчивалась точно на
fill-column. Она возвращаетnil.Аргумент how, если он не
nil, явно задаёт стиль выравнивания. Он может бытьleft,right,full,center, илиnone. Если он равенt, это означает следование указанному стилю выравнивания (см.current-justification, ниже).nilозначает полное выравнивание.Если eop не
nil, это означает, что выполняется только левое выравнивание, еслиcurrent-justificationуказывает полное выравнивание. Это используется для последней строки абзаца; даже если абзац в целом выровнен полностью, последняя строка не должна быть выровнена.Если nosqueeze не
nil, это означает, что внутренние пробелы не меняются.
- Пользовательская опция: default-justification
Значение этой переменной указывает стиль выравнивания, используемый для текста, не указывающего стиль с помощью свойства текста. Возможные значения:
left,right,full,center, илиnone. Значение по умолчанию —left.
- Функция: current-justification
-
Эта функция возвращает правильный стиль выравнивания для заполнения текста вокруг текущей позиции.
Она возвращает значение свойства
justificationтекста в текущей позиции или переменнойdefault-justification, если такого свойства нет. Однако она возвращаетnilвместоnoneдля обозначения «не выравнивать».
- Пользовательская опция: sentence-end-double-space
-
Если эта переменная не
nil, точка, за которой следует только один пробел, не считается концом предложения, и функции заполнения избегают разрыва строки в такой позиции.
- Пользовательская опция: sentence-end-without-period
Если эта переменная не
nil, предложение может заканчиваться без точки. Это используется для языков, таких как тайский, где предложения заканчиваются двойным пробелом, но без точки.
- Пользовательская опция: sentence-end-without-space
Если эта переменная не
nil, это должна быть строка символов, которые могут завершать предложение без последующих пробелов.
- Пользовательская опция: fill-separate-heterogeneous-words-with-space
Если эта переменная не
nil, два слова разного типа (например, английское и CJK) будут разделены пробелом при конкатенации одного, находящегося в конце строки, и другого — в начале следующей строки при заполнении.
- Переменная: fill-paragraph-function
-
Эта переменная предоставляет способ переопределения заполнения абзацев. Если её значение не
nil,fill-paragraphвызывает эту функцию для выполнения работы. Если функция возвращает значение, отличное отnil,fill-paragraphпредполагает, что задача выполнена, и сразу возвращает это значение.Обычное использование этой функции — заполнение комментариев в режимах программирования. Если функции нужно заполнить абзац обычным способом, она может сделать это следующим образом:
(let ((fill-paragraph-function nil)) (fill-paragraph arg))
- Переменная: fill-forward-paragraph-function
Эта переменная предоставляет способ переопределения того, как функции заполнения, такие как
fill-regionиfill-paragraph, перемещаются к следующему абзацу. Её значение должно быть функцией, которая вызывается с единственным аргументом n, количеством абзацев для перемещения, и должна возвращать разницу между n и фактическим количеством перемещённых абзацев. Значение по умолчанию этой переменной —forward-paragraph. См. Абзацы в Руководстве по GNU Emacs.
- Переменная: use-hard-newlines
Если эта переменная не
nil, функции заполнения не удаляют переносы строк, имеющие свойствоhardтекста. Эти жёсткие переносы строк действуют как разделители абзацев. См. Жёсткие и мягкие переносы строк в Руководстве по GNU Emacs.
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/Filling.html