Приоритет/Серьезность:
Низкий Платформа:
Chrome 124, Ubuntu 22 Версия:
Discourse v3.3.0.beta2-dev Описание:
Discourse выполняет автоматическую подсветку синтаксиса с помощью hljs, даже если язык не указан. Эта функция работает в обычном просмотре темы, но не при просмотре кода в полноэкранном режиме. Шаги для воспроизведения:
Создайте тему с блоком кода, не указывая язык.
System.out.println("hello world");
Откройте тему и убедитесь, что hljs определил язык и применил подсветку.
Нажмите кнопку полноэкранного режима в правом верхнем углу блока кода.
Убедитесь, что определение языка hljs не сработало и подсветка не применена.
Ниже приведены несколько скриншотов в одном изображении из-за ограничений для новых пользователей .
Спасибо за отчёт, @oskar1, я могу подтвердить эту ошибку локально. (На meta воспроизвести это сложнее, так как мы используем text, а не auto в качестве default code lang.)
Класс lang-auto применяется к коду в разметке Markdown и автоматически удаляется здесь, чтобы библиотека могла определить язык.
Однако при переходе в полноэкранный режим lang-auto больше не присутствует в элементе, и здесь остаётся только класс language-<определённый_здесь_язык>. Следовательно, lang не определён.
Возможное исправление может быть таким — если lang-auto не найден, ищите language-<..>:
const m = className.match(/^lang-(.+)$/);
→ const m = className.match(/^(?:lang|language)-(.+)$/);