这是我先前回答的问题(语法突出显示的更改)的后续内容。


对于大多数具有多个与语言相关的标记以及带有模糊语言(例如.net!),应该有一个选项来指定在语法突出显示中使用哪种语言,因为有时(而且也经常是!)语言推断是错误的。

以例如

以“主要语言”(恰好是C#)以外的语言给出答案时,即使代码不是C#,其代码仍将突出显示为C#

场景


任何带有多个与语言相关的显式标签的问题。例如,Webclient.UploadFile被标记标记为c#、. net,vb.net和webclient。
尝试使用与“主要”语言不同的代码回答问题。
在这种情况下,请尝试使用VB.NET代码回答问题。

预期结果:代码应在VB.NET中突出显示。实际结果:代码在C#中突出显示!

建议的解决方案
应该有一种显式设置语法突出显示语言的方法。
编辑

结果还显示,使用多个与语言相关的显式标记询问问题也可能使语法突出显示错误!
您可以尝试使用以下内容创建新问题并观察预览:

    //This is C#
    var someValue = GetValue();

some text to separate the two languages

    'This is VB.Net
    Dim someValue = GetValue()


按如下顺序标记问题(按特定顺序)vb.net,.net c#




免责声明所有观察结果都是基于您在输入问题或答案时获得的预览,因此我的观察结果可能不会完全正确。


评论

未正确突出显示的确切代码将是此问题的有用补充。

如果您尝试一下,您将会明白我的意思。如果您想知道没有正确完成的事情,就是VB.NET代码没有正确突出显示。 Prettify假定这两行都是注释/字符串,因为第一行('This is VB.Net)不会终止其引号。

我认为Jeff的注释是关于片段的(包括问题和答案),但也许不是:而且,是的,有计划允许显式覆盖语法,但是现在我们想尝试在担心边缘条件之前使默认值大部分正确。

顺便说一句:杰夫(Jeff)的上述评论还链接到Google Code Prettify维护者关于语言说明符的建议。在那里,Mike Samuel建议在代码块中添加第一行,例如#!css或#!vb。这只是一个细节,但是我想关于指定如何工作的想法可能会更好地发布在这里。

meta.stackexchange.com/questions/981/…

#1 楼

现在已实现。请参阅:
https://stackoverflow.com/editing-help#syntax-highlighting
除了标签推断(最近的更改)之外,您还可以手动指定语言,作为Google Code Prettify的提示。
规范是:
``` lang-or-tag-here
code goes here
```

<!-- language: lang-or-tag-here -->

    code goes here

<!-- language: lang-or-tag-here -->

    code goes here

您还可以使用language-all指定要应用于以下所有代码块的提示:
<!-- language-all: lang-or-tag-here -->

您可以使用标记或修饰语语言代码以指定,尽管修饰语语言代码始终可以工作,无论标签正巧设置为哪种语言。

可用的语言提示已移动
由于有多个可用提示列表现有的整个Meta中,整个列表已合并并移至以下常见问题解答:
什么是语法高亮显示及其工作方式?


评论


iPhone,Mac,Objective-C,可可等标签都非常活跃。如何将“ objc”作为受支持的语言扔掉?

–戴夫·德隆(Dave DeLong)
2011年3月7日在9:09

@dave必须提交给Google Prettify,而不是我们。请参阅code.google.com/p/google-code-prettify

–杰夫·阿特伍德
2011年3月7日在9:27

自动添加lang-前缀会不会更容易,尤其是因为注释已经包含强制性语言术语?

–托马斯·博尼尼(Thomas Bonini)
2011年3月8日在2:07

@kop也与标签冲突,也受支持,请参见stackoverflow.com/tags/default和superuser.com/tags/default

–杰夫·阿特伍德
2011-3-8的3:28

我不知道为什么,但是我不能明确设置代码的语言。我已经在标记为.net和c#的问题上尝试了<!-语言:lang-vb->和<!-语言:lang-sql->,但是它们都不起作用。您能否详细说明如何执行此操作?

– Alex Essilfie
2011年3月8日13:00

@alex只需按照上面的说明进行操作。.您根本没有代码语法注释。查看我对您的帖子的修订

–杰夫·阿特伍德
2011年3月9日在9:12

@Jeff,感谢您尝试维护要求此功能的许多地方/重复项!要获得单个参考点:如果我将大多数帖子更改为引用单个参考点可以吗?

– Arjan
2011-3-9在10:55

@Jeff:还有一个请求...问题/答案预览是否可以使用,以便语法突出显示也可以在那里使用?当前仅在发布问题/答案时使用语法突出显示。

– Alex Essilfie
2011年3月16日18:06

根据设计,每个代码块都需要自己的<!-lang:...->注释吗? (这不是问题,但当前只有注释后的第一个块使用的是特定语言;此后的块仍然使用问题标记中的语言。)

– Arjan
2011年3月31日上午10:27

这不是很明显吗?我知道该功能已实现,但我不知道如何访问它。

– alex
2011年4月29日下午5:10

Windows命令行/批处理文件(.bat)语法有可能吗?

–马丁·沙勒(Martin Scharrer)
2011年7月6日在13:59

我肯定是一名编码人员,但该死的下拉列表也是如此。对我来说,程序员/用户很清楚,对SO /网站也很清楚,这是什么语言,不需要搜集更多的知识。

–套件
2011年9月6日下午4:41

@kit表示“下拉”是选择的标签

–杰夫·阿特伍德
2011年9月6日下午4:56

嗯,是的,但是我只能使用5个标签吗?我用一些表达意图,有些用语言表达。

–套件
2011年9月6日下午4:59

您是否可以添加语言的通用名称,而lang-abc不是该语言的通用名称? (例如lang-vb = Visual Basic)

– doncherry
2011-10-16 15:34

#2 楼

如果有关于某个标记的特定分支(例如,例如“ android-emulator”)的问题,该分支确实包含一些代码,则该标准语言过滤器可插入“ android”(java我认为是:) )不起作用。因此,尚无法完成的代码部分还不完善。我会说能够提示语言不会太奇怪!

#3 楼

如果存在多个语言标签,则prettify将尝试推断该语言。在这些情况下,它不会总是推断出正确的语言,但是从我所看到的来看,它似乎做得很好。我反对这项要求,因为我认为没有必要。

评论


当我在SO上提问时,通常会使用c#和vb.net标记它们,因为我同时使用两种语言,并且可以在两种语言之间快速转换。在这方面,我不希望问题中的代码实际上是C#时突出显示为C#。

– Alex Essilfie
2011-2-7 14:58

同样,许多问题都标有多种语言,尤其是.net区域。如果问题在VB.NET中,则有人可以选择用C#回答,这将使语法高亮显示不正确。 (我尚未对此进行测试,但在VB.NET中回答的C#问题始终会错误地突出显示)。

– Alex Essilfie
2011年2月7日在15:03