Создание подсветки синтаксиса для Nano

Однажды мне пришлось править текст программы на Icon прямо в Nano. И по каким-то причинам подсветка кода на Icon в Nano отсутствует (даже в мощном наборе файлов подсветки, взятом когда-то с одного из сайтов). Именно это побудило меня создать свою подсветку синтаксиса для Nano.
Первая проблема, с которой пришлось столкнуться - это почти полное отсутствие русской документации по сабжу. Стоит также отметить то, что в и в официальной документации Nano об этом говорится вскользь, а на английском языке мне попалась только одна достойная статья, которая, кстати сказать, оказалась в Gentoo Wiki. Однако и тут не все в шоколаде, ибо в статье в основном были одни примеры.
Это не помешало мне уловить суть и использовать пару фраз из тамошних примеров в создании своей подсветки, хотя я и не гуру в регулярных выражениях.
Итак,создаем подсветку.
Вначале нужно создать файл вида имя_языка программирования.nanorc , в моем случае (т.е в случае создания подсветки синтаксиса для Icon) - icon.nanorc.
Открываем файл любимым текстовым редактором и вносим туда строку вида :

syntax "название языка программирования" ".\расширение файла$" 

в моем случае эта строка выглядела так :

syntax "icon" ".\icn$"

(т.е все файлы с расширением *.icn будут опознаваться как файлы с исходным кодом на Icon)
Далее начинается самое простое (для тех, кто знает регулярные выражения) - собственно создание правил раскрашивания синтаксических элементов исходного кода. Для такой раскраски используется ключевое слово color , которое имеет следующий формат :

color цвет_текста,цвет фона, регулярное выражение

которое будет подсвечено. Допускается использование сокращенной формы -

color цвет_текста, регулярное выражение

однако в данном случае цвет фона будет совпадать с цветом фона, установленным по умолчанию.
Как задать цвет ?
Для этого нужно использовать одно из предопределенных ключевых слов, обозначающих цвет : white (белый), black (черный), red (красный), blue (синий), green (зеленый), yellow (желтый), magenta (фиолетовый), и cyan (голубой). Также разрешено использовать префикс bright, которое обозначает выделение цветовой области в тексте, которая будет чуть светлее, чем заданный цвет.
Собственно, практически никаких проблем.
Вот, например , мой файл подсветки синтаксиса для Icon :

syntax "icon" ".\icn$"

#made by Baharew Oleg specially for IconDevelPack

#процедурные блоки и описания переменных
color green "\<(link|global|procedure|initial|static|record|local|end|return|suspend|invocable)\>"

#управляющие структуры
color blue "\<(break|case|of|default|create|every|do|fail|if|then|else|next|not|repeat|until|while|to)\>"
color blue "\<(main)\>"

#функции
color brightblue "\<(abs|acos|asin|atan|dtor|exp|cos|iand|icom|ior|ishift|ixor|log|rtod|sin|sqrt|tan)\>"
color brightblue "\<(any|bal|center|detab|entab|find|left|many|map|match|move|pos|repl|reverse|right|tab|trim|upto)\>"
color brightblue "\<(char|copy|cset|delete|get|image|insert|integer|list|member|numeric|ord|pop|pull|push|put|real)\>"
color brightblue "\<(seq|set|sort|sortf|string|table|type)\>"
color brightblue "\<(chdir|close|delay|display|exit|flush|function|getch|getche|getenv|kbhit|open|name|read|reads|remove|rename|)\>"
color brightblue "\<(seek|stop|system|variable|where|write|writes)\>"

#директивы препроцессора
color cyan "\<(\$define|\$else|\$endif|\$error|\$ifdef|\$ifndef|\$include|\$undef>)\>"

#строки и множества
color brightred ""(\\.|[^\"])*""
color brightred "'(\\.|[^\'])*'"

#комментарии
color yellow "#.*$"

 # специальные ключевые слова и переменные
color magenta "(&ascii)|(&clock)|(&cset)|(&date)|(&dateline)|(&digits)|(&e)|(&errout)|(&fail)|(&host)|(&input)|(&letters)"
color magenta "(&lcase)|(&level)|(&main)|(&null)|(&output)|(&phi)|(&pi)|(&pos)|(&program)|(&random)|(&source)|(&subject)|(&time)"
color magenta "(&trace)|(&ucase)|(&version)|(&x)|(&y)|(&lpress)|(&rpress)"

Итак, в данном примере ключевые слова для описания переменных и процедур будут раскрашены в зеленый цвет, управляющие структуры - в синий цвет, встроенные функции - в синий цвет с подсветкой области,директивы препроцессора - голубым, строки и симнаборы будут раскрашены в красный цвет,комментарии - в желтый, а директивы препроцессора в фиолетовый.
Далее после окончания наполнения файла .nanorc необходимо сохранить файл, а затем переместить (или скопировать) в /usr/share/nano/ . После чего необходимо подключить созданный файл подсветки, для чего нужно открыть ~/.nanorc и внести туда строку

include "/usr/share/nano/имя-файла"

в моем случае это выглядит так :

include "/usr/share/nano/icon.nanorc"

Вот собственно и все,файл подсветки для Icon прилагается :slight_smile:
P.S : Как это выглядит можно увидеть здесь http://aqirbis.0fees.net/post-31/

Не всем их достаточно. У меня пара друзей,которые совсем не ладят с английским и не в состоянии разобраться с примерами) А разметка,да,простая)

Первая проблема, с которой пришлось столкнуться - это почти полное отсутствие русской документации по сабжу. Стоит также отметить то, что в и в официальной документации Nano об этом говориться вскользь, а на английском языке мне попалась только одна достойная статья, которая кстати сказать оказалась в Gentoo Wiki. Однако и тут не все в шоколаде, ибо в статье в основном были одни примеры.

имхо там настолько простая разметка, что в принципе одних примеров вполне достаточно

Предлагаю автору скинуть данный nanorc файл в багзиллу проэкта nano
Думаю от этого будет максимальная польза

Хороший совет!