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

Значення кожного зсуву в c-offsets-alist може бути цілим числом, імям функції або змінної, списком або одним їх символів +, -, + +, -, * або /, що позначають позитивні або негативні кратні змінної c-basic-offset Таким чином, якщо ви хочете поміняти рівні відступів за трьох прогалин на два пробілу, встановіть c-basic-offset в значення 3

Використання функції як значення зсуву надає повну гнучкість в налаштуванні відступів Ця функція викликається з одним аргументом, що містить пару з синтаксичного символу і позиції в буфері, якщо вона є Функція повинна повертати ціле число, рівне зрушенню

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

Команда Cc Co (c-set-offset) – це найпростіший спосіб встановити зрушення, як інтерактивно, так і у вашому файлі ~ / Emacs. Спочатку вкажіть синтаксичний символ, а потім бажаний зрушення Див Розділ 22554 [Синтаксичні символи], с 214, перелік допустимих синтаксичних символів і їх значень

22554  Синтаксичні символи

Це таблиця допустимих синтаксичних символів для відступів режиму C і споріднених з ним режимів і їх синтаксичні значення Зазвичай всім цим символам приписується зрушення в c-offsets-alist

string Усередині рядка, займає кілька рядків в буфері

c Усередині многострочного блочного коментаря в стилі Сі

defun-open

На фігурної скобці, яка відкриває визначення функції

defun-close

На фігурної скобці, яка закриває визначення функції

defun-block-intro

На першому рядку визначення функції верхнього рівня

class-open

На фігурної скобці, яка відкриває визначення класу

class-close

На фігурної скобці, яка закриває визначення класу

inline-open

На фігурної скобці, яка відкриває визначається усередині класу inline-

метод

inline-close

На фігурної скобці, яка закриває визначається усередині класу inline-

метод

extern-lang-open

На фігурної скобці, яка відкриває блок на зовнішньому мовою

extern-lang-close

На фігурної скобці, яка закриває блок на зовнішньому мовою

func-decl-cont

На області між списком аргументів у визначенні функції і відкриває це визначення фігурною дужкою (виключаючи визначення функцій в стилі K & R) У Сі ви не можете писати тут нічого, крім пробільних знаків і коментарів в Сі + + і Java в цьому контекте можуть зявлятися оголошення throws та інші речі

knr-argdecl-intro

На першому рядку оголошення аргументів в стилі K & R Сі

knr-argdecl

На одній з наступних рядків оголошення аргументів в стилі K & R Сі

topmost-intro

На першому рядку визначення конструкції самого верхнього рівня

topmost-intro-cont

На інших рядках визначення самого верхнього рівня

member-init-intro

На першому рядку списку ініціалізацій членів

member-init-cont

На наступних рядках списку ініціалізацій членів

inher-intro

На першому рядку списку множинного успадкування

inher-cont

block-open

На одній їхніх подальших рядків множинного успадкування

На що відкриває фігурною скобці операторного блоку

block-close

На закриває фігурної скобці операторного блоку

brace-list-open

На що відкриває фігурною скобці списку масиву enum або static

brace-list-close

На закриває фігурної скобці списку масиву enum або static

brace-list-intro

На першому рядку списку масиву enum або static

brace-list-entry

На одній їхніх подальших рядків списку масиву enum або static

brace-entry-open

На одній з наступних рядків списку масиву enum або static, коли рядок починається з відкриває фігурної дужки

statement

На звичайному операторі

statement-cont

На рядку продовження оператора

statement-block-intro

На першому рядку нового операторного блоку

statement-case-intro

На першому рядку блоку case

statement-case-open

На першому рядку блоку case, що починається з фігурної дужки

inexpr-statement

На операторном блоці всередині вираження Це використовується для розширення GNU в мові Сі і для для спеціальних функцій Pike, які беруть як аргумент операторний блок

inexpr-class

На визначенні класу всередині вираження Це використовується для аноноімних класів і аноноімних ініціалізаторів масивів в Java

substatement

На першому рядку після if, while, for, do або else

substatement-open

На фігурної скобці, що відкриває блок подоператора

case-label

На мітці case або default

access-label

На мітках доступу Сі + + private, protected або public

label На звичайній мітці

do-while-closure

На while, який завершує конструкцію do-while

else-clause

На else конструкції if-else

catch-clause

На рядках catch і finally в конструкціях try catch в Сі + + і Java

comment-intro

На рядку, що містить тільки початок коментаря

arglist-intro

На першому рядку списку аргументів

arglist-cont

На одній з наступних рядків списку аргументів, коли на рядку з відкри-

вающей список аргументів круглою дужкою немає жодного аргументу

arglist-cont-nonempty

На одній з наступних рядків списку аргументів, коли на рядку з відкри-

вающей список аргументів круглою дужкою є хоча б один аргумент

arglist-close

На закриває круглої скобці списку аргументів

stream-op

На одній рядків продовження конструкції потокового оператора

inclass На конструкції, вкладеної у визначення класу Відступ відносний відкритому-

вающей фігурної скобці визначення класу

inextern-lang

На конструкції, вкладеної в блок на зовнішньому мовою

inexpr-statement

На першому рядку операторного блоку всередині вираження Це потрібно для розширення GCC в мові Сі, яке використовує синтаксис ({..}) Це також потрібно для спеціальних функцій в Pike, що приймають як аргументу операторний блок

inexpr-class

На першому рядку визначення класу всередині вираження Це використовується для аноноімних класів і аноноімних ініціалізаторів масивів в Java

cpp-macro

На початку макросу препроцесора

friend На оголошенні Сі + + friend

objc-method-intro

На першому рядку визначення методу Objective-C

objc-method-args-cont

На одній з рядків продовження визначення методу Objective-C

objc-method-call-cont

На одній з рядків продовження виклику методу Objective-C

inlambda Як inclass, але застосовується всередині лямбда-функцій (тобто анонімних) Іс-

користується тільки в Pike

lambda-intro-cont

На рядку, що продовжує заголовок лямбда-функції, між ключовим словом

lambda і тілом функції Використовується тільки в Pike

22555  Змінні, керуючі відступами в Сі

Цей розділ описує додаткові змінні, які керують поведінкою відступів в режимі C і споріднених з ним режимах

c-offsets-alist

Асоціативний список синтаксичних символів і їх зрушень Ви не повинні міняти його прямо, робіть це через c-set-offset Див Розділ 22553 [Зміна стилю відступів], с 213, для подробиць

c-style-alist

Мінлива для визначення стилів відступів дивіться нижче

c-basic-offset

Базовий зрушення, використовуваний символами + і в c-offsets-alist

c-special-indent-hook

Пастка для спеціальних підстроювань відступів, визначених користувачем Ця пастка викликається після того, як в рядку вже зроблений відступ режимом C або споріднених з ним режимом

Мінлива c-style-alist задає зумовлені стилі відступів Кожен елемент має форму (імя установказмінної ..), де імя – це імя стилю Кожна установказмінної має форму (змінна значення) змінна – це одна з настроювальних змінних, використовуваних режимом C, а значення – це значення для цієї змінної, коли використовується обраний стиль

Коли змінна дорівнює c-offsets-alist, це особливий випадок: значення додається в початок значення c-offsets-alist, а не заміщає його Отже, значення не повинно вказувати кожен синтаксичний символ – Можна написати тільки ті, для яких стиль різниться від прийнятого за замовчуванням

Відступи рядків, що містять тільки коментарі, також схильні до впливу пере-

менной c-comment-only-line-offset (див Розділ 22155 [Коментарі в Сі], с 239)

22556  Стилі відступів в Сі

Стиль Сі – це набір налаштувань стилю відступів Emacs поставляється з декількома зумовленими стилями відступів для C і родинних режимів, включаючи gnu, k & r, bsd, stroustrup, linux, python, java, whitesmith, ellemtel і cc-mode За замовчуванням застосовується стиль gnu

Щоб вибрати потрібний вам стиль, використовуйте команду Mx c-set-style Задавайте імя стилю як аргумент (регістр не має значення) Обраний стиль застосовується тільки до нових буферам, але не до тих, що ви вже редагуєте Ви також можете встановити змінну c-default-style, щоб вказати стиль для різних основних режимів Її значенням повинен бути асоціативний список, де кожен елемент задає один основний режим і стиль відступів, який для нього потрібно використовувати Наприклад,

(setq c-default-style

’((java-mode   &quotjava&quot) (other &quotgnu&quot)))

визначає явний вибір для режиму Java і велить приймати стиль gnu за замовчуванням для решти C-подібних режимів

Щоб визначити новий стиль відступів в Сі, викличте функцію c-add-style:

(C-add-style імя значення застосувативідразу)

Тут імя – це імя нового стилю (рядок), а значення – це асоціативний список, чиї елементи мають форму (змінна Значення) Задаються вами змінні повинні бути серед описаних в цьому керівництві (Див Розділ 22555 [Змінні для відступів в Сі], с 217)

Якщо застосувативідразу не дорівнює nil, c-add-style перемикає в новий стиль відразу після його визначення

226  Автоматичне відображення парних дужок

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

У Ліспі автоматичне відповідність застосовується тільки до круглих дужках У Сі воно застосовується також до фігурним і квадратних дужках Emacs дізнається, які знаки розглядати як парні обмежувачі, грунтуючись на синтаксичній таблиці, яка встановлюється основним режимом Див Розділ 316 [Синтаксис], с 366

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

*

*