[Из песочницы] Sublime Text 3 — пользовательская подсветка синтаксиса

Расширяемость Sublime Text не знает границ. Для тех, кому мало стандартных функций, на Хабре уже рассказывали о том, как создать сниппет, как написать простой плагин, как написать сложный плагин и еще много много чего. Про ручную настройку подсветки синтаксиса толком ничего не смог найти: для кого-то слишком очевидно, кому-то просто не нужна, а кому-то и наверняка же пригодится.Итак, задача: имея какие-нибудь абстрактные логи доступа в wonder-net:

!→14/02 16:44:22 [134.249.51.251:39951>80] (t1 19) >HTTP in:504 out:34 Time:156 GET /5168742330521893/ HTTP/1.1 SCOD=00 !→14/02 16:44:24 [134.249.51.251:49507>80] (t1 20) GET /4405885823409377/ HTTP/1.1 SCOD=00 !→14/02 16:54:11 [195.18.13.107:1721>80] (t2 22) GET /4149437701562173/ HTTP/1.1 SCOD=00 !→14/02 16:54:11 [195.18.13.107:1721>80] (t2 23) >HTTP in:385 out:10138 Time:156 GET /5211537451172048/ HTTP/1.1 SCOD=00 !→14/02 16:54:24 [195.18.13.107:1727>80] (t1 30) >HTTP in:423 out:1220 Time:187 GET /5211537446447554/ HTTP/1.1 SCOD=23 !→14/02 18:07:24 [82.145.208.159:43634>80] (t2 52) GET /4149437838265377/ HTTP/1.1 SCOD=00 !→14/02 18:09:41 [82.145.208.174:41708>80] (t2 61) GET /4149497815750155 / HTTP/1.1 SCOD=00 !→14/02 18:51:39 [82.145.210.33:55210>80] (t1 66) >HTTP in:543 out:34 Time:0 GET /5168757259478487/ HTTP/1.1 SCOD=00 !→14/02 18:51:40 [82.145.210.33:55332>80] (t1 68) >HTTP in:544 out:1243 Time:141 GET /4149497800456701 / HTTP/1.1 SCOD=00 !→14/02 18:51:46 [82.145.210.33:57345>80] (t1 73) >HTTP in:544 out:1243 Time:125 GET /5168742330521893/ HTTP/1.1 SCOD=00 выделить: Дату-время — фиолетовым курсивом; Номер карты — желтым курсивом, если не в черном списке или красным, если иначе; ip-адрес — темно-зеленым, если не в черном списке или красным, если иначе; scod=хх — темно-зеленым если 00 или красным, если иначе.В нашу цветовую схему нужно добавить стили, которыми мы собираемся подсвечивать текст. Насколько я понял, все цветовые схемы аккуратно собраны в файле c:\Program Files\Sublime Text 3\Packages\Color Scheme — Default.sublime-package.Файл представляет собой zip архив без сжатия. Распаковываем, выбираем любимую схему (по умолчанию Monokai.tmTheme) и копируем ее в…(запускаем Sublime Text: меню Preferences — Browse Packages) папку User.

Открываем свежескопированный Monokai.tmTheme для редактирования. В самом низу перед закрывающимся добавляем блоки стилей. Стиль может содержать три параметра: background, foreground и fontStyle. fontStyle в свою очередь bold, italic и underline.

фиолетовый курсив будет выглядеть так:

scope violet settings foreground #EE82EE fontStyle italic жирный желтый (ЖЖ): scope yellow settings foreground #FFD700 fontStyle bold темно-зеленый:

scope green settings foreground #006400 красный:

scope red settings foreground #FF0000 2. В той же папке User создаем файл синтаксиса: wonderLog.tmLanguage с содержимым: patterns name red match \b (? i)(?:5168742330521893×4149437701562173|4149497815750155)\b

name red match \b (? i)(?:134\.249\.51\.251×82\.145\.208\.174)\b

name green match \b (? i)scod=00\b

name red match \b (? i)scod=\d+\b

name green match \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

name yellow match \b\d{16}\b

name violet match \d{1,2}/\d{1,2}\s\d{2}:\d{2}:\d{2}

name wonderLog scopeName wonderLog fileTypes log На примере видно, что если несколько регулярных выражений претендуют закрасить цвет по-разному, то приоритет будет у того, которое описано выше (первее).Сохраняем все.

Выбираем пользовательскую цветовую схему: Preferences — Color Scheme — User — Monokai.

Открываем наш чудо-лог (если расширение файла не совпадает с шаблонным, делаем View — Syntax — wonderLog) и наслаждаемся результатом:

bdb50834def24f2fa012ded6e562b1e5.jpg

© Habrahabr.ru