Команди для природних мов – ЧАСТИНА 3

Якщо змінна colon-double-space не дорівнює nil, команди заповнення ставлять після двокрапки два пробілу

2153  Префікс заповнення

Щоб заповнити абзац, в якому кожен рядок починається з особливого маркера (який може декількома пропусками, що дає абзац з відступом), використовуйте так званий префікс заповнення Префікс заповнення – Це ланцюжок знаків, з якою, за припущенням Emacs, починається кожен рядок, і яка не включається до заповнення Ви можете задати префікс заповнення явно крім того, Emacs може обчислювати його автоматично (див Розділ 2154 [Адаптивне заповнення], с 188)

C-x Встановити префікс заповнення (set-fill-prefix)

Mq Заповнити абзац з поточним префіксом заповнення (fill-paragraph)

M-x fill-individual-paragraphs

Заповнити область, розглядаючи кожну зміну відступу як початок нового абзацу

M-x fill-nonuniform-paragraphs

Заповнити область, вважаючи початком нового абзацу тільки рядка-роздільники абзаців

Щоб задати префікс заповнення, пересуньтеся до рядка, яка починається з бажаного префікса, поставте крапку в кінець префікса і дайте команду Cx (Set-fillprefix) Після C-x стоїть крапка Щоб вимкнути префікс заповнення, визначте порожній префікс: наберіть Cx, коли точка знаходиться на початку рядка

Коли префікс заповнення в дії, команди заповнення знищують його в кожному рядку перед заповненням і вставляють його в кожну рядок після заповнення Режим Auto Fill також автоматично вставляє в кожну новостворену рядок префікс заповнення Команда Co вставляє в створені їй рядки префікс заповнення, коли ви використовуєте її на початку рядка (див Розділ 47 [Порожні рядки], с 39) З іншого боку, команда M-^ знищує префікс (якщо він є) після видаляється перекладу рядка (див Глава 20 [Відступи], с 177)

Наприклад, якщо fill-column дорівнює 40 і ви встановили префікс заповнення рівним ;;

‘, То M-q в такому тексті:

;; Це приклад

;; абзацу всередині

;; коментаря в стилі Лиспа

дає наступне:

;; Це приклад абзацу всередині коментаря

;; в стилі Лиспа

Рядки, що не починаються з префікса заповнення, розглядаються як початківці абзац і в Mq, і в командах роботи з абзацами це дає гарні результати для абзаців з висячим відступом (усі рядки, крім перший, мають відступ) Рядки, що стали порожніми або мають відступ після видалення префікса, також поділяють або починають абзац це саме те, що ви хочете, якщо ви пишете коментарі, що складаються з декількох абзаців, з обмежувачем коментаря на кожному рядку

Ви можете використовувати Mx fill-individual-paragraphs, щоб встановити префікс заповнення для кожного абзацу автоматично Ця команда ділить область на абзаци, вважаючи будь-яка зміна величини відступу початком нового абзацу, і заповнює кожен з цих абзаців Таким чином, всі рядки одного абзацу мають однаковий відступ Саме цей відступ служить префіксом заповнення для кожного абзацу

Mx fill-nonuniform-paragraphs – це схожа команда, яка ділить область на абзаци іншим способом Вона розглядає тільки рядка-роздільники абзаців (як визначено paragraph-separate) як початківців новий абзац Оскільки це означає, що рядки одного абзацу можуть мати різний відступ, як префікс заповнення використовується відступ найменшого серед всіх рядків цього абзацу розміру Це дає добрі результати для стилів, в яких перший рядок абзацу має більший або менший відступ, ніж інша частина абзацу

Префікс заповнення зберігається у змінній fill-prefix Її значення – це або рядок, або nil, коли префікса заповнення немає У кожному буфері для цієї змінної є своє значення її зміна впливає тільки на поточний буфер, але є і значення за замовчуванням, яке ви також можете змінити Див Розділ 3124 [Локальні змінні], с 350

Властивість тексту indentation надає іншій спосіб управління величиною від-

ступа абзацу Див Розділ 21116 [Формат Відступ], с 201

2154  Адаптивне заповнення

Команди заповнення можуть у деяких випадках автоматично обчислювати відповідний для абзацу префікс заповнення: пропуски або певна пунктуація на початку рядка поширюються на всі рядки абзацу

Якщо в абзаці є дві або більше рядки, префікс заповнення береться з другого, але тільки якщо він також зявляється і в першій

Якщо в абзаці є тільки один рядок, команди заповнення можуть взяти префікс з цього рядка Тут складно прийняти рішення, тому що в такому випадку розумними можуть виявитися три варіанти:

Використовувати префікс першого рядка для всіх рядків цього абзацу

Зробити в наступних рядках відступ з пропусків таким чином, щоб вони вирівнялися по тексту, наступного після префікса на першому, але не копіювати насправді префікс першого рядка

Не вживати ніяких особливих дій для другого і наступних рядків

Всі три цих стилю форматування застосовуються часто Тому команди заповнення пята зясувати, який би вам сподобався, грунтуючись на що зявляється префіксі і на основному режимі Як це робиться, описано нижче

Якщо префікс, виявлений на першому рядку, відповідає регулярному виразу adaptive-fill-first-line-regexp, або він виявився послідовністю, починаючої коментар (це залежить від основного режиму), то для заповнення абзацу використовується цей знайдений префікс, за умови, що він не буде діяти як початок абзацу в наступних рядках

Інакше, знайдений префікс перетвориться в еквівалентне число прогалин, і як префікс заповнення для залишилися рядків використовуються ці прогалини, за умови, що вони не будуть діяти як початок абзацу в наступних рядках

У режимі Text і в інших режимах, де абзаци розділяються тільки пустими рядками і перекладами сторінки, префікс, обираний адаптивним заповненням, ніколи не поводиться як початок абзацу, тому він завжди може використовуватися для заповнення

Мінлива adaptive-fill-regexp визначає, які види початку рядки можуть служити префіксом заповнення: використовуються будь-які знаки на початку рядка, відповідні цьому регулярному виразу Якщо ви встановіть змінну adaptive-fill-mode рівний nil, префікс заповнення ніколи не вибирається автоматично

Ви можете задати більш складні методи автоматичного вибору префікса заповнення, встановивши змінну adaptive-fill-function в значення функції Ця функція викликається, коли точка перебуває з лівого краю рядка, і вона повинна повернути відповідний префікс заповнення Якщо вона возвращет nil, це означає, що вона не побачила в цьому рядку префікс заповнення

216  Команди перетворення регістра

У Emacs є команди для перекладу одиночних слів або будь-якого довільного тексту в верхній або в нижній регістр

Ml Перевести наступне слово в нижній регістр (downcase-word)

Mu Перевести наступне слово у верхній регістр (upcase-word)

Mc Зробити першу літеру наступного слова заголовної, а інші – малими

(capitalize-word)

Cx Cl Перевести область в нижній регістр (downcase-region)

Cx Cu Перевести область у верхній регістр (upcase-region)

Команди перетворення слів найбільш корисні Ml (downcase-word) переводить слово після крапки в нижній регістр, пересуваючи точку за нього Таким чином, повторення Ml переводить наступні слова M-u (Upcase-word) переводить все слово в прописні літери, тоді як Mc (capitalize-word) ставить першу букву слова у верхньому регістрі, а решта – в нижньому регістрі Всі ці команди переводять кілька слів за один раз, якщо їм надати аргумент Вони особливо зручні для переведення великого обсягу тексту, набраного повністю у верхньому регістрі, в змішаний регістр, тому що ви можете рухатися по тексту, використовуючи Ml, Mu або Mc, коли це необхідно, і використовуючи іноді Mf, щоб пропустити слово

Коли заданий негативний аргумент, команди перекладу регістра в словах застосовуються до відповідного числу слів перед точкою, не зрушуючи її саму Це зручно, коли ви тільки що набрали слово в неправильному регістрі: ви можете дати команду перекладу регістра і продовжувати набір

Якщо команда перекладу регістра в словах дається в середині слова, то вона застосовується тільки до частини слова, яка слідує за точкою Це дуже схоже на те, що робить Md (kill-word) З негативним аргументом, переклад регістра застосовується тільки до частини слова перед точкою

Інші команди перекладу регістра – це Cx Cu (upcase-region) і Cx Cl (downcase-region), які переводять усі між точкою і влучною в заданий регістр Точка і мітка не зрушуються

Команди перекладу регістра в області, upcase-region і downcase-region, зазвичай заблоковані Це означає, що вони запитують підтвердження, якщо ви намагаєтеся їх використовувати При підтвердженні ви можете включити ці команди, тоді вони більше не будуть запрошувати підтвердження Див Розділ 31411 [Блокування команди], с 364

217  Режим Text

Коли ви редагуєте текстові файлів на природній мові, вам буде зручніше скористатися режимом Text, а не Fundamental Щоб увійти в режим Text, наберіть Mx text-mode

У режимі Text абзаци розділяються тільки пустими рядками і роздільниками сторінок В результаті абзаци можуть мати відступ, і адаптивне заповнення може визначити, який відступ повинен використовуватися для заповнення абзацу Див Розділ 2154 [Адаптивне заповнення], с 188

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*