Нет, в настоящее время эта функция не поддерживается.
GitHub документирует свою обработку облегченных языков разметки (включая Markdown, среди прочего) в github / markup . Примечание шаг 3:
- Подсветка синтаксиса выполняется для блоков кода. См. github / linguist для получения дополнительной информации о выделении синтаксиса.
Если мы перейдем по этой ссылке, мы найдем список грамматик , которые Linguist использует для подсветки синтаксиса в GitHub. Лингвист может применять только одну из грамматик в этом списке к блоку кода одновременно. Конечно, одна из грамматик - Diff
. Однако эта грамматика ничего не знает о языке кода, который используется, поэтому вы не получите подсветку синтаксиса.
Конечно, есть и другие языки, которые часто объединяются. Например, HTML часто включается в язык шаблонов. Следовательно, в дополнение к грамматике HTML
мы также находим грамматики для HTML+Django
, HTML+ECR
HTML+EEX
, HTML+ERB
и HTML+PHP
. В каждом случае одна грамматика знает два языка. И конкретный язык шаблонов, и HTML, который вкраплен в шаблон.
Чтобы выполнить то же самое с помощью diff, вам потребуется отдельная грамматика "diff" для каждого из перечисленных языков. Другими словами, количество грамматик удвоится. Конечно, способ избежать этого может заключаться в том, чтобы трактовать diff
по-другому. Если указано diff
, они могут запустить блок через подсветку синтаксиса дважды, один раз для diff
и один раз для исходного языка. Однако, по крайней мере, при обработке блоков кода на облегченных языках разметки они не реализовали такую функцию.
И если бы они когда-нибудь внедрили такую функцию в будущем, вероятно, было бы сложнее, чем просто выполнить блок кода дважды. В конце концов, каждая строка diff имеет специфический контент diff, который может запутать грамматику другого языка. Следовательно, каждая грамматика должна быть понятной, или каждая строка должна быть подана к грамматике отдельно с удаленными разделами различий. Проблема с последним состоит в том, что грамматика не имеет контекста каждой строки и, скорее всего, ошибется. Возможно ли такое решение - это не входит в этот ответ, но дело в том, что разумно ожидать, что такая функция будет иметь гораздо более низкий приоритет для поддержки из-за сложности.
Так почему же GitHub делает подсветку синтаксиса в других местах на своем сайте? Потому что, в этих случаях, он имеет доступ к двум исходным файлам, которые обрабатываются, и генерирует сам файл diff. Каждый источник сначала выделяется (избегая сложности, упомянутой выше), затем diff создается из двух выделенных исходных файлов. Однако diff, включенный в блок кода Markdown, уже является diff, когда GitHub впервые его видит. Для них нет возможности сначала выделить код предварительного сравнения. Другими словами, процесс, который они используют в настоящее время, не может быть перенесен на поддержку запрошенной функции.