Код с подсветкой
21 декабря 2014Сегодня я искал себе подходящий js-скрипт для подсветки кода (потому что раньше кто-то подсвечивал код вручную или применяя последовательность регулярок).
У меня есть собственная тема для Sublime Text, и я хотел использовать её же для подсвечивания кода на своём сайте. В ней подсвечиваются и имена функций, и форматная строка, и экранированные последовательности в строках, и поэтому всё это должен был поддерживать скрипт, используемый для подсветки.
Я посмотрел Prettify от Google и highlight.js, в которых имена функций считаются plain-текстом; syntaxhighlighter, который часто можно встретить в интернете и в котором подсветки имен функций также нет. В минимизированном коде первых копаться было лень, а в последнем по-хорошему эта функциональность прикручиваться не хотела.
Rainbow выглядел почти идеальным, но он не умеет подсвечивать внутри подсвеченного — то есть как раз форматную строку и экранированные символы.
В конце-концов остановился на SHJS, у которого немного странно записываются правила раскраски кода, зато довольно просто прикручиваются новые правила. Немного поправив его и приделав мою цветовую схему, мы получаем следующее:
#include <iostream> using std::cout; int main() { cout << "Hello, World!\n"; return 0; }
Кроме того, я подредактировал код блога, и нужные скрипты подключаются сами по мере необходимости.