Если переменная colon-double-space не равна nil, команды заполнения ставят после двоеточия два пробела.
21.5.3 Префикс заполнения
Чтобы заполнить абзац, в котором каждая строка начинается с особого маркера (который может несколькими пробелами, что дает абзац с отступом), используйте так называемый префикс заполнения. Префикс заполнения — это цепочка знаков, с которой, по предположению Emacs, начинается каждая строка, и которая не включается в заполнение. Вы можете задать префикс заполнения явно; кроме того, Emacs может вычислять его автоматически (см. Раздел 21.5.4 [Адаптивное заполнение], с. 188).
C-x . Установить префикс заполнения (set-fill-prefix).
M-q Заполнить абзац с текущим префиксом заполнения (fill-paragraph).
M-x fill-individual-paragraphs
Заполнить область, рассматривая каждое изменение отступа как начало нового абзаца.
M-x fill-nonuniform-paragraphs
Заполнить область, считая началом нового абзаца только строки-разделители абзацев.
Чтобы задать префикс заполнения, передвиньтесь к строке, которая начинается с желаемого префикса, поставьте точку в конец префикса и дайте команду C-x . (set-fillprefix). После C-x стоит точка. Чтобы выключить префикс заполнения, определите пустой префикс: наберите C-x ., когда точка находится в начале строки.
Когда префикс заполнения в действии, команды заполнения уничтожают его в каждой строке перед заполнением и вставляют его в каждую строку после заполнения. Режим Auto Fill также автоматически вставляет в каждую вновь созданную строку префикс заполнения. Команда C-o вставляет в созданные ей строки префикс заполнения, когда вы используете ее в начале строки (см. Раздел 4.7 [Пустые строки], с. 39). С другой стороны, команда M-^ уничтожает префикс (если он есть) после удаляемого перевода строки (см. Глава 20 [Отступы], с. 177).
Например, если fill-column равна 40 и вы установили префикс заполнения равным ‘;;
’, то M-q в таком тексте:
;; Это пример
;; абзаца внутри
;; комментария в стиле Лиспа.
дает следующее:
;; Это пример абзаца внутри комментария
;; в стиле Лиспа.
Строки, не начинающиеся с префикса заполнения, рассматриваются как начинающие абзац и в M-q, и в командах работы с абзацами; это дает хорошие результаты для абзацев с висящим отступом (все строки, кроме первой, имеют отступ). Строки, ставшие пустыми или имеющими отступ после удаления префикса, также разделяют или начинают абзац; это именно то, что вы хотите, если вы пишете комментарии, состоящие из нескольких абзацев, с ограничителем комментария на каждой строке.
Вы можете использовать M-x fill-individual-paragraphs, чтобы установить префикс заполнения для каждого абзаца автоматически. Эта команда делит область на абзацы, считая любое изменение величины отступа началом нового абзаца, и заполняет каждый из этих абзацев. Таким образом, все строки одного “абзаца” имеют одинаковый отступ. Именно этот отступ служит префиксом заполнения для каждого абзаца.
M-x fill-nonuniform-paragraphs — это похожая команда, которя делит область на абзацы другим способом. Она рассматривает только строки-разделители абзацев (как определено paragraph-separate) в качестве начинающих новый абзац. Поскольку это означает, что строки одного абзаца могут иметь разный отступ, в качестве префикса заполнения используется отступ наименьшего среди всех строк этого абзаца размера. Это дает хорошие результаты для стилей, в которых первая строка абзаца имеет больший или меньший отступ, чем остальная часть абзаца.
Префикс заполнения хранится в переменной fill-prefix. Ее значение — это либо строка, либо nil, когда префикса заполнения нет. В каждом буфере для этой переменной есть свое значение; ее изменение воздействует только на текущий буфер, но имеется и значение по умолчанию, которое вы также можете изменить. См. Раздел 31.2.4 [Локальные переменные], с. 350.
Свойство текста indentation предоставляет другой способ управления величиной от-
ступа абзаца. См. Раздел 21.11.6 [Формат Отступ], с. 201.
21.5.4 Адаптивное заполнение
Команды заполнения могут в некоторых случаях автоматически вычислять подходящий для абзаца префикс заполнения: пропуски или определенная пунктуация в начале строки распространяются на все строки абзаца.
Если в абзаце есть две или более строки, префикс заполнения берется из второй, но только если он также появляется и в первой.
Если в абзаце есть только одна строка, команды заполнения могут взять префикс из этой строки. Здесь сложно принять решение, потому что в таком случае разумными могут оказаться три варианта:
• Использовать префикс первой строки для всех строк этого абзаца.
• Сделать в последующих строках отступ из пропусков таким образом, чтобы они выровнялись по тексту, следующему после префикса на первой, но не копировать в действительности префикс первой строки.
• Не предпринимать никаких особенных действий для второй и последующих строк.
Все три этих стиля форматирования применяются часто. Поэтому команды заполнения пятаются выяснить, какой бы вам понравился, основываясь на появляющемся префиксе и на основном режиме. Как это делается, описано ниже.
Если префикс, обнаруженный на первой строке, соответствует регулярному выражению adaptive-fill-first-line-regexp, или он оказался последовательностью, начинающей комментарий (это зависит от основнего режима), то для заполнения абзаца используется этот найденный префикс, при условии, что он не будет действовать как начало абзаца в следующих строках.
Иначе, найденный префикс преобразуется в эквивалентное число пробелов, и в качестве префикса заполнения для оставшихся строк используются эти пробелы, при условии, что они не будут действовать как начало абзаца в следующих строках.
В режиме Text и в других режимах, где абзацы разделяются только пустыми строками и переводами страницы, префикс, выбираемый адаптивным заполнением, никогда не ведет себя как начало абзаца, поэтому он всегда может использоваться для заполнения.
Переменная adaptive-fill-regexp определяет, какие виды начала строки могут служить префиксом заполнения: используются любые знаки в начале строки, соответствующие этому регулярному выражению. Если вы установите переменную adaptive-fill-mode равной nil, префикс заполнения никогда не выбирается автоматически.
Вы можете задать более сложные методы автоматического выбора префикса заполнения, установив переменную adaptive-fill-function в значение функции. Эта функция вызывается, когда точка находится с левого края строки, и она должна вернуть подходящий префикс заполнения. Если она возвращет nil, это означает, что она не увидела в этой строке префикс заполнения.
21.6 Команды преобразования регистра
В Emacs есть команды для перевода одиночных слов или любого произвольного текста в верхний или в нижний регистр.
M-l Перевести следующее слово в нижний регистр (downcase-word).
M-u Перевести следующее слово в верхний регистр (upcase-word).
M-c Сделать первую букву следующего слова заглавной, а остальные — строчными
(capitalize-word).
C-x C-l Перевести область в нижний регистр (downcase-region).
C-x C-u Перевести область в верхний регистр (upcase-region).
Команды преобразования слов наиболее полезны. M-l (downcase-word) переводит слово после точки в нижний регистр, передвигая точку за него. Таким образом, повторение M-l переводит последующие слова. M-u (upcase-word) переводит все слово в прописные буквы, в то время как M-c (capitalize-word) ставит первую букву слова в верхнем регистре, а остальные — в нижнем регистре. Все эти команды переводят несколько слов за один раз, если им придать аргумент. Они особенно удобны для перевода большого объема текста, набранного полностью в верхнем регистре, в смешанный регистр, потому что вы можете двигаться по тексту, используя M-l, M-u или M-c, когда это необходимо, и используя иногда M-f, чтобы пропустить слово.
Когда задан отрицательный аргумент, команды перевода регистра в словах применяются к соответствующему числу слов перед точкой, не сдвигая ее саму. Это удобно, когда вы только что набрали слово в неправильном регистре: вы можете дать команду перевода регистра и продолжать набор.
Если команда перевода регистра в словах дается в середине слова, то она применяется только к части слова, которая следует за точкой. Это очень похоже на то, что делает M-d (kill-word). С отрицательным аргументом, перевод регистра применяется только к части слова перед точкой.
Другие команды перевода регистра — это C-x C-u (upcase-region) и C-x C-l (downcase-region), которые переводят все между точкой и меткой в заданный регистр. Точка и метка не сдвигаются.
Команды перевода регистра в области, upcase-region и downcase-region, обычно заблокированы. Это означает, что они запрашивают подтверждение, если вы пытаетесь их использовать. При подтверждении вы можете включить эти команды, тогда они больше не будут запрашивать подтверждения. См. Раздел 31.4.11 [Блокирование команды], с. 364.
21.7 Режим Text
Когда вы редактируете текстовые файлов на естественном языке, вам будет удобнее воспользоваться режимом Text, а не Fundamental. Чтобы войти в режим Text, наберите M-x text-mode.
В режиме Text абзацы разделяются только пустыми строками и разделителями страниц. В результате абзацы могут иметь отступ, и адаптивное заполнение может определить, какой отступ должен использоваться для заполнения абзаца. См. Раздел 21.5.4 [Адаптивное заполнение], с. 188.
Источник: Ричард Столмен, Руководство по GNU Emacs

April 20th, 2012
admin
Опубликовано в рубрике
Метки: