Подсветка синтаксиса Midnight Commander: добавляем свой синтаксис | ||
Разное > Консоль Всем хорош exim но его конфигурация не похожа ни на что соответственно и подсветка в нем скучно-серая и чтобы исправить эту досадную ошибку решено было покопаться в недрах гугла на предмет Midnight commander syntax highlight.
Краткий конспект поисков представлен нижеВсем хорош exim но его конфигурация не похожа ни на что соответственно и подсветка в нем скучно-серая (см.ниже)и чтобы исправить эту досадную ошибку решено было покопаться в недрах гугла на предмет Midnight commander syntax highlight. Краткий конспект поисков представлен ниже ДО: Теория MC syntax Highlight Согласно ману редактор МС (man mcedit) ищет подсветки в файле ~/.mc/cedit/Syntax или если там нет файлов тогда в $PREFIX/share/mc/syntax/Syntax. Внимание. Эти файлы просматриваются именно в такой последовательности и ищутся до первого совпадения. Поэтому если вы напишите файл Syntax в домашней директории то будут определяться ТОЛЬКО синтаксисы описанные в нем (это касается версии МС 4.7.5, возможно все изменилось в более поздних версиях). Быстрый способ Быстрый (но ОЧЕНЬ не точный) способ был найден здесь. В нем просто заменяется синтаксис неизвестного типа (файл /usr/local/share/mc/syntax/unknown.syntax) на sh.syntax) Но этот способ не качественный и неспортивный. Поэтому мы пойдем другим путём. Синтаксис Syntax-а Для начала мы зайдем в $PREFIX/share/mc/syntax/Syntax и в самом начале поставим ссылку на разрабатываемый нами файл: file configure exim\sconfiguration include exim.syntax Которая означает: все файлы которые начинаются с configuration и находятся в папке exim подсвечиваются синтаксисом из файла exim.syntax. Таким образом любые резервные копии (configure_28_11_2010, configure.orig, configure.default и т.д. — тоже будут подсвечены). Контексты В синтаксисе может быть один или несколько контекстов. Контекст — все что заключено между определенными служебными символами\словами (delimiters) пример: context " " green spellcheck — все что между лапками отображается зеленым (в нашем случае строка) context exclusive # \n brown — все что между # и концом строки — коричневый (комментарий) Обязательный контекст дефолтный (context default) используется для подсветки того что не находится ни в одном контексте. Keywords В любом контексте служебные слова задаются в таком виде: keyword [whole|wholeright|wholeleft] [linestart] string foreground [background] коротко о параметрах:
Еще бы хорошо определить какие символы НЕ обозначают конец слова. Это делается при помощи команды wholechars: wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890.- exim.Syntax Собственно начнем мы с дефолтного контекста: context default keyword = white keyword : yellow keyword ! red keyword # brown keyword \/\/ brown keyword ${ green keyword } green keyword whole domainlist brightcyan keyword whole begin brightcyan keyword whole acl brightcyan keyword whole warn cyan keyword whole accept cyan keyword whole reject cyan keyword whole drop cyan keyword whole deny cyan ............. — здесь мы определяем целые слова и их цвет Далее: keyword wholeright smtp_* brightcyan keyword wholeright rfc1413_* brightcyan keyword wholeright recipients_max* brightcyan keyword wholeright system_filter* brightcyan keyword wholeright maildir_* brightcyan keyword wholeright message_* brightcyan keyword wholeright quota_warn_* brightcyan keyword wholeright server_* brightcyan ............. — определяем целые семьи служебных слов (все что начинается с и до конца слова И переходим к другим контекстам: context " " green spellcheck context exclusive # \n brown — строка и однострочный комментарий context exclusive = \n magenta keyword \\\n red keyword \\ red keyword \/\/ brown keyword "*" green keyword '*' green — Контекст присвоения параметров domainlist relay_to_domains = local_domains Также отвечает за то чтобы строки в этом контексте отображались зеленым: keyword "*" green, keyword '*' green, а служебные символы переноса строки — красным. Выводы ПОСЛЕ этих манипуляций (без перегрузки МС) наш конфиг стал выглядеть более привлекательно: P.S. Основные источники: man mcedit А также /usr/local/share/mc/syntax/Syntax Сам файл синтаксиса exim.Syntax можно забрать здесь Источник: http://habrahabr.ru/blogs/UNIX/128239/ |
||
Комментарии | ||