Код с подсветкой

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;
}

Кроме того, я подредактировал код блога, и нужные скрипты подключаются сами по мере необходимости.