视觉基本的代码不正确地呈现与 prettify.js 从Google。

在堆溢出:

Partial Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'set page title
        Page.Title = "Something"
    End Sub

End Class

在Visual Studio...

Visual Basic in Visual Studio

我发现这个的 自述 文件:

我怎么指定哪种语言的我的 代码是吗?

你不需要指定的语言 由于美观列印()将猜测。你的 可以指定一种语言通过指定 语言扩展着的 美观列印类,像这样:

<pre class="prettyprint lang-html">
  The lang-* class specifies the language file extensions.
  Supported file extensions include
    "c", "cc", "cpp", "cs", "cyc", "java", "bsh", "csh", "sh",
    "cv", "py", "perl", "pl", "pm", "rb", "js",
    "html", "html", "xhtml", "xml", "xsl".
</pre>

我看没有 lang-vblang-基本的 选项。没有人知道,如果存在一个作为加?


注:这是关系到 VB.NET 代码块 建议用于堆叠的溢出。

有帮助吗?

解决方案

/编辑:我重写整个发布。

下面是一个非常完整的解决方案的VB突出的问题。所以如果有什么更好的, 使用它。VB法突出肯定是想要的。

我还添加了一个码的例子有一些复杂的代码文本,突出显示正确。但是,我甚至还没有试图获得XLinq的权利。可能仍然的工作,虽然。的 关键词清单 取自MSDN。上下文关键字不包括在内。你知道的 GetXmlNamespace 操作者?

算法知道文字型的人物。它也应该能够处理标识符的类型人物,但我没有测试过这些。注意代码的工作上 HTML.因此,&, < 并>需要被解读为命名(!) 实体,不是单一的字符。

对不起长regex.

var highlightVB = function(code) {
    var regex = /("(?:""|[^"])+"c?)|('.*$)|#.+?#|(&amp;[HO])?\d+(\.\d*)?(e[+-]?\d+)?U?([SILDFR%@!#]|&amp;)?|\.\d+[FR!#]?|\s+|\w+|&amp;|&lt;|&gt;|([-+*/\\^$@!#%&<>()\[\]{}.,:=]+)/gi;

    var lines = code.split("\n");
    for (var i = 0; i < lines.length; i++) {
        var line = lines[i];

        var tokens;
        var result = "";

        while (tokens = regex.exec(line)) {
            var tok = getToken(tokens);
            switch (tok.charAt(0)) {
                case '"':
                    if (tok.charAt(tok.length - 1) == "c")
                        result += span("char", tok);
                    else
                        result += span("string", tok);
                    break;
                case "'":
                    result += span("comment", tok);
                    break;
                case '#':
                    result += span("date", tok);
                    break;
                default:
                    var c1 = tok.charAt(0);

                    if (isDigit(c1) ||
                        tok.length > 1 && c1 == '.' && isDigit(tok.charAt(1)) ||
                        tok.length > 5 && (tok.indexOf("&amp;") == 0 &&
                        tok.charAt(5) == 'H' || tok.charAt(5) == 'O')
                    )
                        result += span("number", tok);
                    else if (isKeyword(tok))
                        result += span("keyword", tok);
                    else
                        result += tok;
                    break;
            }
        }

        lines[i] = result;
    }

    return lines.join("\n");
}

var keywords = [
    "addhandler", "addressof", "alias", "and", "andalso", "as", "boolean", "byref",
    "byte", "byval", "call", "case", "catch", "cbool", "cbyte", "cchar", "cdate",
    "cdec", "cdbl", "char", "cint", "class", "clng", "cobj", "const", "continue",
    "csbyte", "cshort", "csng", "cstr", "ctype", "cuint", "culng", "cushort", "date",
    "decimal", "declare", "default", "delegate", "dim", "directcast", "do", "double",
    "each", "else", "elseif", "end", "endif", "enum", "erase", "error", "event",
    "exit", "false", "finally", "for", "friend", "function", "get", "gettype",
    "getxmlnamespace", "global", "gosub", "goto", "handles", "if", "if",
    "implements", "imports", "in", "inherits", "integer", "interface", "is", "isnot",
    "let", "lib", "like", "long", "loop", "me", "mod", "module", "mustinherit",
    "mustoverride", "mybase", "myclass", "namespace", "narrowing", "new", "next",
    "not", "nothing", "notinheritable", "notoverridable", "object", "of", "on",
    "operator", "option", "optional", "or", "orelse", "overloads", "overridable",
    "overrides", "paramarray", "partial", "private", "property", "protected",
    "public", "raiseevent", "readonly", "redim", "rem", "removehandler", "resume",
    "return", "sbyte", "select", "set", "shadows", "shared", "short", "single",
    "static", "step", "stop", "string", "structure", "sub", "synclock", "then",
    "throw", "to", "true", "try", "trycast", "typeof", "variant", "wend", "uinteger",
    "ulong", "ushort", "using", "when", "while", "widening", "with", "withevents",
    "writeonly", "xor", "#const", "#else", "#elseif", "#end", "#if"
]

var isKeyword = function(token) {
    return keywords.indexOf(token.toLowerCase()) != -1;
}

var isDigit = function(c) {
    return c >= '0' && c <= '9';
}

var getToken = function(tokens) {
    for (var i = 0; i < tokens.length; i++)
        if (tokens[i] != undefined)
            return tokens[i];
    return null;
}

var span = function(class, text) {
    return "<span class=\"" + class + "\">" + text + "</span>";
}

代码进行测试:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    'set page title
    Page.Title = "Something"
    Dim r As String = "Say ""Hello"""
    Dim i As Integer = 1234
    Dim d As Double = 1.23
    Dim s As Single = .123F
    Dim l As Long = 123L
    Dim ul As ULong = 123UL
    Dim c As Char = "x"c
    Dim h As Integer = &amp;H0
    Dim t As Date = #5/31/1993 1:15:30 PM#
    Dim f As Single = 1.32e-5F
End Sub

其他提示

美化并支持VB的意见,因为8月2009年。

获得vb语法突出显示正常工作需要三件事情;

<script type="text/javascript" src="/External/css/prettify/prettify.js"></script>
<script type="text/javascript" src="/External/css/prettify/lang-vb.js"></script>

和一个预先阻绕你的代码如:

<PRE class="prettyprint lang-vb">
 Function SomeVB() as string
   ' do stuff
   i = i + 1
 End Function
</PRE>

计算器丢失的lang-vb.js 列入,并且能够指定哪种语言,通过降价,即: class="prettyprint lang-vb" 这就是为什么它不工作在这里。

对于细节上的问题:看看 的美化问题的日志

在此期间,你可以把一个额外的评论字在你的评论意见,以让它看起来好。例如:

Sub TestMethod()
    'Method body goes here'
End Sub

你还需要逃避内部评论人物在正常vb-时尚:

Sub TestMethod2()
    'Here''s another comment'
End Sub

美化仍然把它作为一个字符串而不是发表评论,但至少它看起来好。

另一种方法,我看到的是启动一个额外的评论 '//, 像这样的:

Sub TestMethod3()
    ''// one final comment
End Sub

然后这是处理像一个意见,但你必须处理C式评论的标记

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top