wiki:ru/doc/editor/syntaxHighlight
Last modified 13 years ago Last modified on 10/06/10 14:45:56

Подсветка синтаксиса cooledit

Внимание! Частично эта информация устарела!

Начиная с версии 3.6.0, cooledit умеет подсветку синтаксиса. Это означает, что ключевые слова и контексты (такие как комментарии, строковые константы и так далее) будут подсвечены разными цветами. Этот раздел объясняет формат файла ~/.cedit/syntax.

Файл ~/.cedit/syntax перечитывается при каждом открытии редактора. В файле содержатся правила подсвечивания, каждое из которых записано с новой строки, и которые определяют, какие из ключевых слов каким цветом подсвечиваются. Также файл разделён на секции, каждая из которых, начинается со строки с командой file и регулярным выражением, следующим за ней. Регулярное выражение определяет имя файла, к которому будет применён набор правил. Далее следует описание для отображения в заголовке редактора, объясняющее тип файла пользователю. Третий параметр (необязательный) - регулярное выражение, соответствующее первой строке текста из файла. Если любое из регулярных выражений по имени или по первой строке совпадёт, то правила будут загружены.

Секция оканчивается началом новой секции. Каждая секция разделена на контексты, а каждый контекст содержит правила. Контекст (context) - область текста, которой принадлежат особенный набор правил. Например, область комментариев в стиле C (например между /* и */) имеет свой собственный цвет. Он является контекстом, несмотря на то, что он не имеет других правил внутри себя, так как, возможно, мы не хотим ничего подсвечивать внутри C-комментария.

Простейшая секция для языка C может выглядеть так:

file .\*\\.c C\sProgram\sFile (#include|/\\\*)

wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ

# default colors
context default
keyword whole if 24
keyword whole else 24
keyword whole for 24
keyword whole while 24
keyword whole do 24
keyword whole switch 24
keyword whole case 24
keyword whole static 24
keyword whole extern 24
keyword { 14
keyword } 14
keyword '*' 6

# комментарии C
context /\* \*/ 22

# Директивы препроцессора C
context linestart # \n 18
keyword \\\n 24

# Строковые константы C
context " " 6
keyword %d 24
keyword %s 24
keyword %c 24
keyword \\" 24

Каждый контекст начинается со строки вида:

context [exclusive] [whole|wholeright|wholeleft] [linestart] delim [linestart] delim [foreground] [background]

Единственное исключение составляет первый контекст. Он должен начинаться со строки вида:

context default [foreground] [background]

иначе cooledit возвратит ошибку.

Параметр linestart определяет, что начало ограничителя (delim) должен совпадать с началом строки.

Параметр whole определяет, что ограничитель (delim) должен быть целым словом. Набор символов, из которых может состоять слово, могут быть изменены в любой точке файла с помощью команды wholechars. Команда wholechars в самом начале устанавливает набор в состояние по умолчанию и поэтому может быть опущена. Для того, чтобы определить, что слово должно быть целым только слева, можно использовать параметр wholeleft и, соответственно, справа - wholeright. Наборы символов для левого и правого направлений могут быть установлены отдельно с помощью следующей команды:

wholechars [left|right] characters

Параметр exclusive определяет подсветку между ограничителями (delim), исключая при этом сами ограничители (delim).

Каждое правило имеет вид:

keyword [whole|wholeright|wholeleft] [linestart] string foreground [background]

Контекст (context) или ключевое слово (keyword) обрабатываются так, что могут включать символы табуляции и пробелы. Для этого используются последовательности \t и \s. Новая строка и \ определяются последовательностями \n и
соответственно. Также, последовательность \* должна быть использована для определения символа *. Сам по себе символ * является метасимволом (wildcard), который определён как любое количество символов, большее и равное нулю. Например,

keyword '*' 6

подсвечивает все односимвольные константы C зелёным цветом. Также можно использовать

keyword "*" 6

для расцвечивания строковых констант, исключая многострочные константы. Метасимволы могут использоваться совместно с контекстами в позиции первого или последнего символа.

Важно отметить значение строки:

keyword \\\n 24

Эта строка определяет ключевое слово (keyword), содержащее символ \ и символ новой строки (\n). Так как ключевые слова имеют более высокий приоритет, чем разделители контестов, это ключевое слово предотвращает завершение контекста в конце строки, если строка оканчивается символом \, позволяя, таким образом, применять расцветку к дерективам С-препроцессора, расположенным на нескольких строках.

Цвета пронумерованы от 0 до 26.

Также вы можете использовать именованные цвета, определённые в /usr/lib/X11/rgb.txt, однако лишь однословные их определения. Лучше использовать численные представления, чтобы ограничить использование цветовой палитры.

Комментарии определяются символом # в начале строки.

Если вы описываете синтаксис языка, безразличного к регистру букв, то следует использовать ключевое слово caseinsensitive. Его необходимо указывать в начале файла синтаксиса.

Ввиду простоты реализации есть некоторые затруднительные ситуации, которые не будут обрабатываться корректно, но это мелкие раздражители. В большинстве своём достаточно сложные ситуации могут быть обработаны с помощью этих простых правил. Неплохой идеей будет просмотреть несколько файлов с правилами для изучения изящных приёмов, которые вы можете использовать, применив немного воображения.


http://translated.by/you/syntax-highlighting-in-cooledit/into-ru/trans/

Оригинал (английский): SYNTAX HIGHLIGHTING (in cooledit) Перевод: © styx, shkoda.

Форматирование и редактирование: andrew_b

Проходил мимо: smind

translated.by переведено толпой