Редагування програм – ЧАСТИНА 5

Якщо відриває та закриває обмежувачі не відповідають один одному, як наприклад в [x), в луна-області зявляється попередження Правильні пари описуються в синтаксичної таблиці

Відображенням парних дужок управляють три змінні blink-matching-paren включає або вимикає цю можливість nil вимикає, а значення за замовчуванням, рівне t, включає її blink-matching-delay говорить, скільки секунд потрібно очікувати за замовчуванням це 1, але на деяких системах корисно задати частину секунди blinkmatching-paren-distance вказує, скільки знаків у зворотному напрямку треба досліджувати, щоб знайти парний відкриває обмежувач Якщо пара не буде знайдена на такій відстані, то сканування зупиняється і нічого не відображається Це робиться для того, щоб уникнути великих витрат часу на пошук парного обмежувача в тому випадку, якщо пари не існує За умовчанням вона дорівнює 12000

При використанні X Windows ви можете запросити більш потужну альтернативну різновид автоматичного показу парних дужок, включивши режим Show Paren Цей режим вимикає звичайний спосіб відображення парних дужок і використовує замість нього підсвітку збігів Коли точка перебуває після закриває дужки, подвечіваются ця закриває дужка і парна їй відкриваєш інакше, якщо точка знаходиться перед відкриває дужкою, підсвічується парна дужка (Підсвічувати відкриває дужку після крапки не потрібно, тому що поверх цього знака знаходиться курсор) Для включення і виключення цього режиму використовуйте команду M-x show-paren-mode

227  Управління коментарями

Оскільки коментарі є вельми важливою частиною програмування, Emacs

надає особливі команди для редагування і вставки коментарі

2271  Команди для коментарів

Команди коментарів вставляють, знищують і вирівнюють коментарі:

M- Вставити або вирівняти коментар в поточному рядку (indent-forcomment)

C-x Встановити стовпець коментаря (set-comment-column)

C-u C-x

Знищити коментар в поточному рядку (kill-comment)

C-M-j Подібна hRETi, За якою слід вставка або вирівнювання коментаря

(indent-new-comment-line)

M-x comment-region

Додати або видалити обмежувачі коментарів на всіх рядках області

Команда, яка створює коментарі, називається M- (Indent-for-comment) Якщо на рядку ще немає коментаря, то створюється новий коментар, вирівняний по особливому стовпцю, званому стовпцем коментаря Коментар створюється вставкою рядки, з якою, як думає Emacs, повинні починатися коментарі (значення comment-start, дивіться нижче) Точка оставляется за цим рядком Якщо текст в рядку тексту простягається далі стовпця коментаря, то робиться відступ до підходящої кордону (зазвичай вставляється принаймні один пробіл) Якщо основний режим визначив рядок, завершальну коментар, то вона вставляється після точки, щоб зберегти правильний синтаксис

M- може бути використана також і для вирівнювання існуючого коментаря

Якщо рядок вже містить початок коментаря, то M- просто пересуває за нього точку і

робить відступ до прийнятої позиції Виняток: коментарі, що починаються в стовпці

0, не зрушуються

Деякі основні режими мають особливі правила відступу для деяких видів коментарів у певних контекстах Наприклад, в коді на Ліспі, коментарі, що починаються з подвійною крапки з комою, мають відступ такий же, як якби вони були рядками коду, а не відступ до стовпця коментаря Коментарі, що починаються з трьох точок з комою, передбачається розміщувати їх з лівого межі рядка Emacs розуміє ці угоди, виконуючи відступ коментаря з подвійною крапкою з комою, використовуючи hTABi  і не змінюючи відступ коментаря з потрійною точкою з комою взагалі

;; Ця просто приклад функції

;;; Тут годяться і 2, і 3 точки з комою (Defun foo (x)

;;; А тепер перша частина функції

;; Наступний рядок додає одиницю

(1 + x)) Цей рядок додає одиницю

Для коментаря в коді на Сі, якому на його рядку передують тільки пробіл-

ві знаки, робиться такий же відступ, як для рядка коду

Навіть коли існуючий коментар має правильний відступ, M- раніше корисна для переходу відразу до початку коментаря

Команда C-u C-x (Kill-comment) знищує коментар в поточному рядку, якщо він там є Відступ перед початком коментаря також знищується Якщо на цьому рядку немає коментаря, то нічого не робиться Щоб перенести коментар в інший рядок, пересуньтеся в кінець цього рядка, зробіть Cy і потім M-, щоб заново його вирівняти Зауважте, що C-u C-x – Це не окремий ключ це C-x (Set-commentcolumn) з негативним аргументом Ця команда запрограмована таким чином, що коли вона отримує негативний аргумент, вона викликає kill-comment Однак, kill-comment – це допустима команда, яку ви можете безпосередньо привязати до ключа, якщо ви цього хочете

2272  Багаторядкові коментарі

Якщо ви набираєте коментар і виявляєте, що хотіли б продовжити його на інший рядку, то ви можете використовувати команду CMj (indent-new-comment-line) Вона завершує набраний вами коментар, потім створює нову порожню рядок і починає новий коментар, з відступом під старим коментарем Коли діє режим Auto Fill, то перехід за стовпець заповнення під час набору коментаря призводить до того, що коментар буде продовжуватися саме таким чином Якщо під час набору CMj точка знаходиться не в кінці рядка, то текст в частині рядка стає частиною нового рядка коментаря

Щоб перетворити існуючі рядки в рядки коментарів, використовуйте команду Mx comment-region Вона додає обмежувачі до рядків, які починаються в області, роблячи їх таким чином коментарями З негативним аргуменом, вона робить протилежне – видаляє обмежувачі коментарів з рядків області

З положітельнм аргументом, comment-region повторює останній знак з додаю-

мій послідовності, починаючої коментар Таким чином, в режимі Lisp, Cu 2

Mx comment-region додасть ;;’ на кожен рядок Повторення обмежувачів коментаря – це спосіб залучення до нього уваги У Ліспі для отримання правильних відступів ви повинні використовувати аргумент, рівний двом, між визначеннями функцій, і трьом – всередині визначень функцій

Мінлива comment-padding вказує, скільки прогалин повинна вставити commentregion в кожну рядок між обмежувачем коментаря і початковим текстом цього рядка За умовчанням це 1

2273  Параметри управління коментарями

Стовпець коментаря зберігається у змінній comment-column Ви можете явно встановити її на потрібне число Або ви можете використовувати команду Cx (Set-commentcolumn), яка встановлює стовпець коментаря рівним тому стовпцю, де знаходиться точка C-u C-x встановлює стовпець коментаря так, щоб він відповідав останньому коментарю перед точкою в цьому буфері, і потім робить M-, щоб вирівняти рядок поточного коментаря під попередню Відзначимо, що C-u C-x запускає функцію kill-comment, як описано вище

Мінлива comment-column – це власна змінна кожного буфера: установка її впливає тільки на поточний буфер, але існує і значення за замовчуванням, яке ви також можете змінити за допомогою setq-default Див Розділ 3124 [Локальні змінні], с 350 Багато основні режими инициализируют цю змінну для поточного буфера

Команди роботи з коментарями розпізнають коментарі, грунтуючись на регулярному виразі, яке є значенням змінної comment-start-skip Переконайтеся, що це регулярний вираз не відповідає порожній рядку Воно може відповідати чогось більшого, ніж просто обмежувачу, починаючому коментар, в самому строгому значенні цього слова наприклад, в режимі С значення цієї змінної одно / \ \ * + *, Що відповідає додатковим зірочкам і пробілам після самого / *. (Зверніть увагу, \ \ требуется в синтаксисі Лиспа для того, щоб включити в рядок \, яка потрібна, щоб скасувати для першої зірочки її спеціальне значення в синтаксисі регулярних виразів Див Розділ 125 [Регулярні вирази], с 91)

Коли команда для коментарів створює новий коментар, вона вставляє в його початок значення comment-start Значення comment-end вставляється після точки, так що воно буде слідувати за текстом, який ви вставите в цей коментар У режимі З comment-start має значення / *, а comment-end має значення * / .

Мінлива comment-multi-line керує тим, як веде себе CMj (indent-newcomment-line) при використанні всередині коментаря Якщо comment-multi-line дорівнює nil, як це зазвичай і буває, то коментар на поточному рядку завершується, а на новій рядку починається новий коментар Якщо comment-multi-line відмінна від nil, то нова наступна рядок підготовляється як частина того ж самого коментаря, який знаходився на першому рядку Це виконується таким чином: в старій рядку не вставляється обмежувач коментаря, і в новий рядок не вставляти початок коментаря У тих мовах, де працюють багаторядкові коментарі, вибір значень для цієї змінної – справа вашого смаку

Мінлива comment-indent-function повинна містити функцію, яка буде викликатися для підрахунку відступу у знову вставляється коментарі або для вирівнювання існуючого коментаря Ця функція викликається без аргументу, але з точкою на початку коментаря або в кінці рядка, якщо вставляється новий коментар Вона повинна повернути номер стовпчика, в якому повинен починатися коментар Наприклад, в режимі Lisp ця функція-пастка для створення відступу засновує своє рішення на тому, скільки точок з комою починають існуючий коментар, і на коді в попередніх рядках

Джерело: Річард Столмен, Керівництво по 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>

*

*