您是否认为应该提供有关语法突出显示使用哪种语言的提示?

有时我发现在SQL或VB.NET上突出显示答案比吸引人的注意力更有用;例如:


将MySQL select转换为PostgreSQL
从对象的VB.NET数组列表中检索数据

选择我曾经去过的两个看着最近。

评论

每个meta.stackexchange.com/questions/72082/…都标记为[状态已完成],但另请参见meta.stackexchange.com/questions/63800/…。

为什么要完成此状态?是否实施了一些措施让我们选择语言?任何带引号ala'\'的反斜杠的SQL都会使其余代码看起来像是在字符串内一样。

@Emtcuifor这是每个meta.stackexchange.com/q/72082/130044完成的明确语法是meta.stackexchange.com/q/63800/130044

快速参考:<!-语言:lang-php->或<!-语言:lang-javascript->或<!-语言:lang-none-> ...等。 (也是,这是语言列表。)

#1 楼

请注意,这个问题有点过时了,因为我们现在根据标签推断美化的语言类型。
查看更多:对语法高亮显示的更改
现在已实现。除了标签推断之外,您还可以手动指定语言作为Google Code Prettify的提示。
规范为:
<!-- language: lang-or-tag-here -->

    code goes here

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

    code goes here

您可以使用标签或美化语言代码来指定,尽管无论标签正巧设置为哪种语言,美化语言代码始终可以保证正常工作。
对于以下所有代码块,请使用<!-- language-all: lang-or-tag -->对给定的突出显示。
实际示例
对于时间较少的人...
<!-- language: lang-js -->
<!-- language: typescript -->
<!-- language: c# -->

请注意,尽管语言可能是大写(C#)或混合大小写(TypeScript),但它们都是小写的。语法突出显示(防止错误的,令人误解的猜测)
<!-- language: lang-none -->

使用language-all,您的语法突出显示选项应用于以下所有代码块:
<!-- language-all: lang-html -->

可用的语言提示已移动

由于整个Meta中都存在可用提示的几个列表,因此整个列表已合并并移至以下FA问:
什么是语法突出显示以及它如何工作?


评论


我认为当前具有标签智能功能的解决方案比以前有了很大的改进。特别是VB代码现在看起来会好得多。唯一的缺点是非语言特定的问题,可能会在VB.NET中获得答案。

–敬畏
2011年1月26日,12:03

@awe确实会将其格式化为注释,除非您混合使用语言标签并再次强制默认推断。.对我来说,这很好,请参阅stackoverflow.com/questions/4801650/…

–杰夫·阿特伍德
2011年1月26日,12:19

我们可以在帮助页面中记录下来吗?我已经寻找了一段时间,这是我找到它的第一个地方,因此,如果它在帮助页面中的某个位置,则看不到它。

– Old Pro
2012年5月31日下午2:10

@old,您以某种方式错过了它,请参阅meta.stackoverflow.com/editing-help#syntax-highlighting-在所有Stack Exchange网站上均相同

–杰夫·阿特伍德
2012年5月31日下午5:17

@杰夫,我的坏。我一直在寻找与“语言”有关的东西,并且我正在Ask Ask Different的底部附近寻找它。

– Old Pro
2012年5月31日下午6:53

万分感谢。但是,为什么所有的魔术弦都以lang-开头?

–上校恐慌
13年4月12日在21:07

谢谢。仅供参考,在这里描述的所有解决方案中,只有<!-language-all:lang-tag->选项对我有用。 :/

–user188035
13年5月25日在20:39



DOS / Win shell脚本有荧光笔吗?

– Web Devie
13年7月30日在6:57

我希望我们在SO的帖子编辑器中内置了此功能。我总是最终使用谷歌搜索并从这个答案中复制/粘贴,这适得其反。

–Neolisk
2013年9月12日18:35

它也太敏感了-<!-language-all:...->不起作用-语言前没有空格。每当我需要此功能时,我都会在此职位上发表。非常令人沮丧的是它不在编辑器中和/或更宽容

–基本
13年11月4日,9:47



我的天哪,我每次都忘记了这件事……我已经回到第145次了。他们应该带一些UI进行语言选择。

–user158239
2014年5月19日19:16



我建议使用更简单的标记,例如GitHub的三重标记-语言或类似标记。我也必须每次都用谷歌搜索。

–佐尔坦
2014年10月28日15:41

我已经在这个问题上用Google搜索了10多次了。由于某种原因,该语法无法记住。不记得它的语言或语言,不记得它是lang-python语言-python lang-py python-lang还是仅仅是python或其他东西。至少我记得它的<!-->而不是<--!>

–鲍里斯(Boris)
20-1-29在9:27



所有可用语言标签的列表在哪里?

–加百利·斯台普斯
20-2-26在22:00

Google Code Pretty不再维护:github.com/googlearchive/code-prettify/commit/…。由于仍然存在一些不再修复的错误,因此有计划迁移到其他荧光笔吗?

– Boghyon Hoffmann
20年5月5日在15:16

#2 楼

现在起作用的一件事是,通过使用<pre>代码</pre>来突出显示(没有总比错要好)。

评论


同意-这值得指出

– ShuggyCoUk
09年7月2日在18:19

还有一个缺点,那就是您必须转义其中的任何。

–乔伊
09-10-13在16:04

以及如何逃避<?

– MPelletier
2010-2-21在22:10

@MPelletier:使用实体“ lt”(通常使用“&”前缀和“;”后缀)。 (不只是写它,因为我不确定注释如何转义。)

–理查德
2010-2-22在9:48



但这不会只是显示为“&lt;”在您的代码中,因为pre代表预格式化?

– MPelletier
2010-3-20在20:11

OK, so yes, that shows up as <. Then how could one print < for just that?

– MPelletier
Mar 21 '10 at 5:08

@MPelletier:您使用实体放大器创建&。

–理查德
2010-3-21在9:20

You have to use
code goes here
(yes, uppercase
) if you want syntax highlighting. You need to escape < to <, > to > and & to &.


– nyuszika7h
Mar 7 '11 at 11:28

请注意,现在似乎首选<!-language:none->是禁用预格式化文本块的语法突出显示的首选机制。

– Phrogz
2011年3月31日22:32



@ nyuszika7h非常感谢
 。我一直在到处寻找基本的突出显示!可能值得自己回答,因为推荐的技术仅在某些情况下有效。多谢。


– Tresf
18年11月28日在21:15

#3 楼

代码修饰有问题,

this [^\s>/] == "example" # is highlighted as a regex, not a comment, 1 / 2


..但是它通常做得很好,

没有很好的解决方案, Markdown没有提供指定代码块是哪种语言的方法(请参阅此处),因此StackOverflow需要实现自己的方式。

过去,我已经修改了markdown解析器以查找对于特殊的第一行,类似..

{{language:python}}
import os
print os.listdir()


那么可用性问题就是,无法知道支持哪些语言,或者我该如何指定说,Visual Basic .NET-应该是visualbasicnetvisual-basic.netvb.net vbnet等吗??

我想可以通过使代码块按钮询问语言来解决此问题(或者添加第二个按钮)特定语言代码按钮),但随后该站点不再使用Markdown,而是使用StackOverflows自己的非标准版本。.

评论


如果您想表现得很快,可以查看问题被标记为哪种语言,并将其用作启发式方法。具有足够代表的人可以对新标签进行任何关联,(它也可能鼓励更一致的标签)-对于“我正在尝试将此Perl转换为vb.net”类型的问题,仍然不总是正确的, 提个醒...

–Rowland Shaw
09年7月2日在15:45

我喜欢使用标签的想法。它会涵盖最正确的

– ShuggyCoUk
09年7月2日在18:18

我同意让SO停止降价是不好的。那就是说,如果您可以将其嵌入为合法的html ...?即使那样,我还是更喜欢罗兰的想法

– ShuggyCoUk
09年7月2日在18:19

@dbr-不知道哪种语言也可以通过文档解决。

– MikeSchinkel
10-10-22在7:48

以失败主义者的态度打倒。

– SamB
2010-11-20 23:49

#4 楼

最后我知道,该网站使用白名单的方法来剥离不支持的标签或标签上不支持的属性。
因此,我认为至少让我们为class标签提供pre属性(现在,不)。这样,我们可以手动设置语法高亮显示的语言,如下所示:

<pre class="prettyprint lang-sql"><code>
--sql comment here
&lt/code></pre>


回答问题;是的,绝对值得提供有关语法突出显示使用哪种语言的提示。我的意思是看看ask.sqlservercentral.com或ask.sqlteam.com,它们都是针对SQL Server的stackexchange网站。但是没有任何代码示例正确突出显示。

评论


class属性不应该放在代码标签上吗?我假设那就是你的意思。

–乔恩·西格尔(Jon Seigel)
10 Mar 10 '10 at 16:31

@Jon Seigel,它同时适用于pre标签和code标签。

–çağdaş
10 Mar 14 '10 at 0:05

#5 楼

VB的一种解决方法是在每个注释行的末尾添加一个额外的'撇号',以便daft语法荧光笔认为您已终止了字符串。

Dear MarkDown
  'Unterminated 
  Why Is Half My Code Red, It Is Not A String
End Moan


变得

Dear MarkDown
  'Terminated '
  This Is How It Should Look
End Moan


我有时会编辑其他人的帖子以添加撇号。


根据Joel的建议编辑使用更好的''#

Dear MarkDown
  ''# Terminated 
  This Is How It Should Look
End Moan


评论


更好的解决方法是使用''#表示注释。这样就不必担心在注释本身中转义引号,并且实际上将文本像注释一样上色,而不是字符串文字。

–乔尔·科恩(Joel Coehoorn)
2010年5月18日下午16:15

@JoelCoehoorn-这很丑。

–尼古拉斯·巴布列斯科(Nicolas Barbulesco)
14年6月21日在14:28

@MarkJ —您降解其他人的代码以使错误的语法荧光笔起作用?

–尼古拉斯·巴布列斯科(Nicolas Barbulesco)
2014年6月21日14:30

@JoelCoehoorn —更改代码以避开语法突出显示器的错误。我从未见过。

–尼古拉斯·巴布列斯科(Nicolas Barbulesco)
2014年6月21日14:31

#6 楼

正如我在另一个答案中已经说过的那样,如果可以从标记中推断出该语言,则可能会有所帮助。这样,此修复程序将可追溯使用,并且工作流程不会改变。

我知道prettify确实有一种指定语言的方法,这只是使用它的问题。

评论


是的,这也是可能的。但是,这对于包含多种语言(例如SQL + PHP,JavaScript + Perl或C + Lisp)的摘要的帖子无济于事。与添加到HTML白名单相比,它似乎还涉及更多的代码更改。

– Svante
10 Mar 10 '10 at 21:11

@Svante-如果将可能列表过滤到这些标签中,它仍然会对那些人有所帮助。然后,例如,您可能有一个php和sql问题,但至少它不会尝试像C一样为sql上色。

–乔尔·科恩(Joel Coehoorn)
2010年5月18日在16:17

#7 楼

Scavenger的答案是一个好主意,但是#可能在代码中是有效的,例如C++中的预处理程序命令,可以作为实际代码示例的一部分。以特殊方式在代码块之前指定。代码块缩进了4个空格,因此语言说明符可以缩进3个空格(并且仅在出现在代码块之前时才有意义)。这遵循已经存在的标记规则的简单性。


VB.NET
Dim myVariable As String'这是第一行代码行
myVariable =“ Hello世界”


#8 楼

添加一个用于非常浅色突出显示的选项,从本质上讲,它只不过会使用颜色括弧和孤立的文字,将”和“”视为文本定界符,而对于当前不支持的多种语言,则没有其他用途。

功能示例代码看起来像是使用当前荧光笔的废话,像SQL这样的标点符号语言也是如此。 Perl简直好笑。

实际上,对它的思考更多,您甚至都不想要文字内容。当它失败时,它对可读性的代价太高了(例如,以F#为例考虑通用类型参数)。

本质上,任何要求无界状态且永远不会跨越新行的东西都应该运行得很好。不受限制但边界很常见的东西,例如空格,换行,任何非单词字符等,很可能不会弄乱许多语言。

评论


要指出的是,在某些语言中,'不是字符串定界符,并且-并非总是“减量”。不能说我在SO上看到了许多Perl问题(猜想每个人都还在使用perlmonks),但是我担心它会如何处理正则表达式定界符...

–Rowland Shaw
09年6月30日在12:38

#9 楼

我认为最干净的语法是这样的:

# Python:

import this
this.eat()


即第一行的特定于语言的注释标记,空格和语言标识符。当然,“ Py”,“ Python 2.6”以及诸如“ Pyton”之类的拼写错误也应适用。

评论


不确定内联代码示例如何工作?

–Rowland Shaw
2010-3-31在7:40

不会的。内联代码难道不应该足够短而不会着色吗?

–流浪的瑙塔
2010-4-20在8:04

实际上,内联代码示例始终不会突出显示(仅使用等宽字体和灰色背景设置样式...)

–敬畏
2010-09-21 8:24

我坚信拼写错误不起作用。

– Svante
2010-09-29 14:24

#10 楼

VB注释的另一个解决方法是在行的开头添加两个撇号和一个井号。这样,注释不会以文本突出显示,并且会更好地突出显示。

''# You're commenting!
Dim c As New Comment()


请参阅此元问题。

#11 楼

有没有人看到过这种通用语法对MATLAB有多可怕?查看此问题中的最后一段代码。 MATLAB使用撇号(')作为矩阵转置运算符。结果,其后的代码中的所有内容均以棕色字符串突出显示。

MATLAB中的注释以%开头,而这些注释也从未被突出显示。也许我们至少可以为<asm></asm><matlab></matlab>之类的某些语言制作单独的HTML标签。这将非常有帮助,因为发布难看的MATLAB问题或答案需要花费很多时间重新格式化原始代码。我个人自愿编写代码来实现此目的,只是告诉我该怎么做。

评论


google-code-prettify.googlecode.com/svn/trunk/README.html;也可以看上面杰夫的答案

– balpha
2011年7月6日在17:06