= Подсветка синтаксиса 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. {{{ #!comment и объяснены ниже в разделе ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ПОВЕДЕНИЯ }}} Также вы можете использовать именованные цвета, определённые в {{{/usr/lib/X11/rgb.txt}}}, однако лишь однословные их определения. Лучше использовать численные представления, чтобы ограничить использование цветовой палитры. Комментарии определяются символом '''#''' в начале строки. Если вы описываете синтаксис языка, безразличного к регистру букв, то следует использовать ключевое слово '''caseinsensitive'''. Его необходимо указывать в начале файла синтаксиса. Ввиду простоты реализации есть некоторые затруднительные ситуации, которые не будут обрабатываться корректно, но это мелкие раздражители. В большинстве своём достаточно сложные ситуации могут быть обработаны с помощью этих простых правил. Неплохой идеей будет просмотреть несколько файлов с правилами для изучения изящных приёмов, которые вы можете использовать, применив немного воображения. {{{ #!comment Если вы не можете решить проблему с помощью этих правил, а у вас есть правило, которое вы считаете, будет полезным, пожалуйста, напишите мне письмо с запросом на реализацию. Однако не просите о поддержке регулярных выражений, так как это решительно невозможно. Полезным замечанием будет: работайте с как можно большим количеством вещей, которые вы можете сделать, чем пытайтесь реализовать вещи, которые не покрываются данной реализацией. Помните: подсветка синтаксиса должна сокращать количество возможных ошибок, а не делать код красиво выглядящим. }}} ------------------------------------------------------------------------------- http://translated.by/you/syntax-highlighting-in-cooledit/into-ru/trans/ Оригинал (английский): [http://www.delorie.com/gnu/docs/mc/mcedit.1.html SYNTAX HIGHLIGHTING (in cooledit)] Перевод: © styx, shkoda. Форматирование и редактирование: andrew_b Проходил мимо: smind translated.by переведено толпой