Spec-Zone.ru › Elisp

Заполнение

Заполнение означает регулировку длины строк (перемещением переносов строк) таким образом, чтобы они были почти (но не больше) заданной максимальной ширины. Кроме того, строки могут быть выровнены, что означает вставку пробелов для точного выравнивания левых и/или правых краев. Ширина контролируется переменной 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

Spec-Zone.ru

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