MaxZ
1
代码高亮似乎会忽略转义引号(单引号和双引号)。这意味着,如果代码段中的字符串包含转义引号,则该字符串的某些部分会被像普通代码一样高亮显示。在此论坛中,代码高亮似乎已禁用,因此我附上了我首次注意到此问题的特定论坛帖子的链接。
我的截图论坛帖子的链接:
https://unofficialnextion.com/t/set-vale-on-page2/1679/3
更多详情:
- 该论坛运行 Discourse v2.9.0.beta9
- 为 bash、cs、cpp、xml、ini、json、makefile、markdown、python、c、c-like 启用了代码高亮。默认设置为 cpp。将这些语言高亮设置重置为默认值并不能解决此问题。
- 在安全模式下也存在此问题
- 在单引号字符串中转义单引号时也存在此问题(在双引号字符串中转义单引号和在单引号字符串中转义双引号可以正常工作)。
此致,
Max
Falco
(Falco)
2
这是 highlightjs 库,所以任何 bug 都是上游的。
另外,这似乎在 cpp 模式下也能工作?
const char* NXT_CMD_END = "\xff\xff\xff";
Serial.print("page2.t0.txt=\"Any text\"");
Serial.print(NXT_CMD_END);
您可以使用代码块中的“info string”功能设置显式语言:
```cpp
your code here
```
这将创建一个 cpp 風格的代码块。
3 个赞
MaxZ
3
感谢您的快速回复和信息!
确实,如果显式设置,cpp 高亮显示可以正常工作。但是,在进一步研究这个问题时,我发现了一个……意料之外的行为。
我将“高亮语言”列表中的所有语言都移除,只保留了 cpp,并将“默认语言”恢复为 auto。结果仍然是错误的高亮显示。打开 Firefox 中的检查器后发现,代码似乎被识别为 vbnet——这是一个从未出现在高亮语言列表中的语言(无论是默认语言还是我为解决此问题尝试过的任何自定义语言)?这是否应该发生?
此致,
Max
MaxZ
5
我重新加载了页面。虽然论坛帖子本身从未改变——即使重启 Firefox 或使用 CTRL+F5 重新加载页面——但我注意到编辑帖子的预览在重新加载页面时确实使用了修改后的设置。
因此,将 cpp 作为列表中的唯一语言(为简单起见),如果我将默认语言设置为 cpp,帖子编辑预览中的代码高亮是正确的。如果我将默认语言设置为 auto 并再次重新加载页面,那么它就不再像上一个帖子中所描述的那样正确了。
此致,
Max
Falco
(Falco)
6
重启浏览器也无济于事。在 Discourse 中,帖子在服务器上只会被“烘焙”(从 markdown 转换为 HTML)一次,生成的 HTML 会被缓存到数据库中。为了更新已烘焙的帖子,你需要“重新烘焙”它。这可以通过管理员用户使用帖子上的扳手菜单来完成,或者由帖子作者通过编辑帖子内容来完成。
1 个赞
MaxZ
7
谢谢。重新烘焙(Rebaking)的结果与编辑预览时相同。auto 选择了一个不在高亮语言列表中的语言(vbnet)。将默认语言显式设置为 cpp(无论是在论坛设置中还是像您这里展示的那样)确实可以按先前报告的那样工作。
所以问题仍然是:auto 是否应该使用列表之外的其他语言?
此致,
Max