在我们的论坛上,我们最近注意到 代码正在被自动高亮,即使 autohighlight all code 已关闭,且 highlighted languages 为空。我们这样做是因为我们有大量不支持的语言代码。但现在这些代码被检测为 C#。
示例帖子:
在我们的论坛上,我们最近注意到 代码正在被自动高亮,即使 autohighlight all code 已关闭,且 highlighted languages 为空。我们这样做是因为我们有大量不支持的语言代码。但现在这些代码被检测为 C#。
示例帖子:
我们下周能复现这个问题吗,@tshenry?
我可以在 Try 环境上复现。看起来 autohighlight_all_code 站点设置未被遵循。无论该设置是否勾选,该功能似乎都处于启用状态。highlighted languages 设置会影响语言检测,但如果将其全部移除,当检测到类似代码的内容时,默认似乎会变为 csharp。
最近一次涉及语法高亮的核心更改是 @j.jaffeux 的重构:
明天会查看一下
我认为这里没有发生任何功能回退,最多只是在我几周前进行各种修复之前,它的行为就不正确。
这里发生的情况是,默认情况下我们总是将 auto 和 nohighlight 添加到可接受的代码类列表中。如果在定义代码块时未指定任何语言,它将使用 default_code_lang 的值,该值默认为 auto;如果您将其设置为 nohighlight,则应获得预期的结果。请注意,您需要重新生成帖子的 HTML。此外,您可能也不需要清空 highlighted_languages,因为如果您选择了 nohighlight,该设置将不起作用。
这发生在全新的帖子中,所以肯定有某些地方发生了变化。
(是的,我也意识到我不需要一个空的 languages 列表,因为我们偶尔会收到一些 JavaScript 和 Python 代码,所以如果有人在帖子中添加代码,不如直接启用高亮显示。)
问题在于,当未选中“自动高亮所有代码”时,未标记的代码块仍会被自动高亮。
代码块()始终会自动高亮,而缩进代码块( )受该设置影响。
哦……嗯……为什么会有这种差异?能改吗?
Discourse 方面确实做了些改动,因为之前 fenced code blocks 并没有自动高亮。我们的 Discourse 论坛已经运行快两年了,直到最近这次更新之前,fenced code blocks 都没有自动高亮。
可以更改吗?是的,“自动高亮所有代码”设置可使两种代码块的行为保持一致。
如果您希望仅在明确指定语言时才进行自动高亮,
也许吧,但正如我所说,我现在没发现任何不符合预期的问题。所以我目前的猜测是,之前某些功能本就不该正常工作,而你们只是依赖了那种异常行为。
我推测,当时它被识别为某种语言,但该语言未能正确加载,导致代码块最终没有被高亮。
嗯,好的。那我们可以把这个变成一个请求,建议将“自动高亮所有代码”设置的名称(甚至描述)修改得更准确吗?能否将其改为“自动高亮缩进代码”,描述为“即使缩进代码块未明确指定语言,也对其应用代码高亮。”
当然,欢迎随时提交 PR。
另外,如果你发现任何问题,我也很乐意修复。
查看我的控制台时,我也发现了一些可疑之处:
这并非新情况,但我认为我们注入的 nohighlight 值有误,应为 no-highlight。这也进一步印证了我的猜测:你看到的被识别为代码但无法找到、最终回退到 no-highlight 的内容正是这个原因。我将进行修改。
我将提交一个 PR 来修改描述。
还有一个问题:当高亮语言列表为空时,为什么 csharp 仍是一个选项?空设置是否等同于使用了默认列表?
是的,我也有同样的疑问。
当我们移除这个类,然后让 highlightjs 对代码块进行高亮时,我们不再依赖 markdown,而且这是一个客户端的改动,因此类的限制不再适用。
简单来说:
嗯,这在一定程度上限制了它的实用性。我看看能不能为描述想出一个有用的说明。
再补充一个数据点:我们将 text 作为默认值,它是 nohighlight 的别名,使用效果良好。
偶尔会注意到一些小问题,但总体而言,这对我们来说是最好的方案,而且使用 raw 等格式看起来更美观,例如:
```text
jtl_name=$(/usr/local/bin/kubectl exec -it --namespace=$namespace $master_pod -- bash -c "ls -tr /*.jtl" | awk '{sub(/\r$/, ""); print}')
```
生成结果:
jtl_name=$(/usr/local/bin/kubectl exec -it --namespace=$namespace $master_pod -- bash -c "ls -tr /*.jtl" | awk '{sub(/\r$/, ""); print}')
我们在编辑器中也为默认的 text 围栏代码块设置了自定义图标。