Речь не просто о показе фрагмента кода с подсветкой синтаксиса для конкретного языка (это у нас уже есть: например, открываем тегом php</kbd> и закрываем тегом <kbd>).
Мне нужно, чтобы можно было подсвечивать отдельные строки, возможно, добавлять к ним комментарии и показывать правки в строке. Такие возможности обычно полезны на любых форумах, где обсуждаются технические вопросы, когда вы советуете внести изменения или указываете на проблемные места.
Хотя мы и используем GitHub для нашего проекта, я спрашиваю не о том, как отображать изменения, происходящие в GitHub, а о чём-то, что можно вводить независимо внутри Discourse. Приведённое выше изображение служит лишь примером того, как это могло бы выглядеть.
Так, у них есть этот фрагмент в Gist, и они предлагают реализовать это вне подсветчика синтаксиса (в данном случае это marked.js, полагаю, то же самое можно сделать и с highlight.js).
Как вы думаете, Discourse мог бы это сделать? Или, прежде чем спрашивать об этом, имеет ли это вообще архитектурный смысл?
По-видимому, общая идея заключается просто в поиске и замене: убрать метки diff, отправить код в подсветчик синтаксиса, а затем снова применить поиск и замену. Звучит довольно неуклюже, но на самом деле фрагмент не так уж и сложен.
Это, безусловно, возможно, но я не думаю, что это будет легко. Всё подсветка синтаксиса происходит в JavaScript, поэтому её можно манипулировать с помощью компонента темы.
С этого момента я буду использовать конструкцию diff — она полезна.
Я не вижу, чтобы Discourse реализовывал другое предложение из Gist. Чем больше я об этом думаю, тем больше убеждаюсь, что это должно быть встроено внутрь подсветки синтаксиса, а не находиться снаружи.
В сущности, с течением времени имеет смысл добавлять некоторые функции в подсветку синтаксиса, и основная задача показать код в удобочитаемом виде естественным образом расширяется до отображения некоторых динамических аспектов кода.
Что изменилось, где, кем; на что я указываю; какой полезный комментарий объясняет связь кода с местом, где он публикуется, и так далее.