【问题标题】:Fix for google-code-prettify w/ c#使用 c# 修复 google-code-prettify
【发布时间】:2010-12-23 11:11:07
【问题描述】:

Prettify 在标记 c# 时为类型和方法提供相同的类,因此它们的颜色相同。这是因为方法在 c# 中是帕斯卡大小写,而不是像在 java 中那样是骆驼大小写。这会影响我的博客和所有 stackoverflow c# 代码,因为它们也使用 prettify。

有人能解决这个问题吗?

如果没有,您至少可以 star/vote the official bug 报告于 2009 年 3 月,以便作者再看一看。

【问题讨论】:

  • 哇,在这个问题上“tawani”的人肯定知道如何甜言蜜语。

标签: c# javascript


【解决方案1】:

TextMate (OS X) 或 E-TextEditor (Windows)

TextMate/E-TextEditor 将通过语法高亮为多种语言生成 HTML 和 CSS。

这是你要做的:

  1. 在 TextMate/E-TextEditor 中打开文件
  2. 如果没有自动选择,请从屏幕底部的菜单中选择语言
  3. 转到捆绑包->TextMate->从文档创建 HTML
    • 这将在一个新文档中创建所有 HTMl/CSS。
    • 注意:Windows 用户也选择“TextMate”捆绑包(不是“E-TextEditor”)
  4. 利润!

注意:您必须为 C# 语法安装 C# 包(包括所有其他通用语言)。为此,请安装“Get Bundles”包,然后使用它来安装 C# 包。

编辑:阅读 cmets 我意识到 TextMate 只是 Mac 用户的解决方案。有时我会忘记 Windows。

您也可以在 Windows 上使用E-TextEditor。步骤相同。

【讨论】:

【解决方案2】:

我实际上编写了自己的语法高亮库来解决这样的问题。它与 prettify 非常相似,但您必须明确指定语言。

【讨论】:

  • +1 用于在您的库中更好地突出显示 C# 语法(Sunlight v1.17.437 与 Syntax Highlighter v3.0.83)
【解决方案3】:

相同的语法可能具有不同的含义。只是没有足够的信息来正确语法突出显示所有内容。

看看这个例子:

static class Program
{
    class Foo { public class Bar { public static void Func() { } } }
    class Foo2 { public static Baz Bar2 { get; set; } }
    class Baz { public void Func2() { } }

    static void Main()
    {
        Foo.Bar.Func();
        Foo2.Bar2.Func2();
    }
}

在第一行中,Bar 是一个内部类,应该以绿色突出显示。在第二行中,Bar2 是 Foo2 类型的属性,应该以黑色突出显示。 Func 和 Func2 都是函数,应该用黑色高亮显示。

以下是 Visual Studio 突出显示该代码的方式。

【讨论】:

    【解决方案4】:

    问题在于,如果没有上下文,就无法判断它是方法还是类型。

    举个例子:

    var value = new Test();
    
    Test();
    

    本例实例化一个新的Test,然后调用方法Test。找出哪个是类,哪个是类型的唯一方法是拥有 1. 整个代码库和 2. 编译器。

    然后我什至没有碰过无效代码。

    话虽如此,我认为 SO 使用的当前美化词在没有任何上下文的情况下突出显示代码示例方面做得非常好。

    【讨论】:

    • 那么有'new'关键字来识别那个案例吗?
    • 是的,没错,但你还是有问题。当有人选择非帕斯卡大小写时你会怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多