Github 支持语法高亮如下:
```javascript
let message = 'hello world!'
```
它支持 diff 如下:(但没有语法高亮)
```diff
-let message = 'hello world!'
+let message = 'hello stackoverflow!'
```
我怎样才能同时获得 'syntax highlight' 和 'diff' ?
最佳答案
不,目前不支持此功能。
GitHub 在 github/markup 中记录了他们对轻量级标记语言(包括 Markdown 等)的处理。 .注意步骤 3:
- Syntax highlighting is performed on code blocks. See github/linguist for more information about syntax highlighting.
如果我们点击该链接,我们会找到 list of grammars Linguist 用于在 GitHub 上提供语法高亮显示。语言学家一次只能将该列表中的一种语法应用于代码块。当然,其中一种语法是
Diff
.但是,该语法对差异代码的语言一无所知,因此您不会获得语法高亮显示。当然,还有其他语言经常结合使用。例如,HTML 通常包含在模板语言中。因此,除了
HTML
语法,我们还找到 HTML+Django
的语法, HTML+ECR
HTML+EEX
, HTML+ERB
, 和 HTML+PHP
.在每种情况下,单一语法都知道两种语言。特定的模板语言和散布在模板中的 HTML。要使用 diff 完成同样的事情,您需要为列出的每种语言使用单独的“diff”语法。换句话说,语法的数量将增加一倍。当然,避免这种情况的一种方法可能是处理
diff
不同。当diff
被指定时,他们可以通过语法高亮显示两次,一次用于 diff
一次用于源语言。但是,至少在处理轻量级标记语言中的代码块时,他们还没有实现这样的功能。而且,如果他们将来要实现这样的功能,那么简单地运行代码块两次可能会更加复杂。毕竟,diff 的每一行都有 diff 特定的内容,这会混淆其他语言的语法。因此,每个语法都需要区分差异,或者需要将每行单独提供给语法,并删除差异部分。后者的问题是语法没有每一行的上下文,更容易出错。这种解决方案是否可能超出了这个答案的范围,但重点是,由于所涉及的复杂性,可以合理地预期这种功能的支持优先级要低得多。
那么,为什么 GitHub 会在其网站的其他地方进行语法高亮呢?因为,在这些情况下,它可以访问正在比较的两个源文件并自己生成差异。首先突出显示每个源(避免上面提到的复杂性),然后从两个突出显示的源文件创建差异。但是,当 GitHub 第一次看到它时,包含在 Markdown 代码块中的 diff 已经是一个 diff。他们没有办法首先突出显示预差异代码。换句话说,他们当前使用的过程将无法转移到支持请求的功能。
关于github - 如何在 Github 中使用语法高亮编写 diff 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53147310/