Fix for google-code-prettify w/ c#

Prettify gives types and methods the same class when tokenizing c# so they are colored the same. This is because methods are pascal case in c# instead of camel case like in java. This affects my blog and all stackoverflow c# code since they use prettify too.

Does anyone have a fix for this?

If not, you can at least star/vote the official bug that was reported in Mar/2009 so the authors take another look.

Answers


I actually wrote my own syntax highlighting library to solve problems like this. It's pretty similar to prettify but you have to specify the language explicitly.


It is possible for identical syntax to have different meanings. There just isn't enough information to properly syntax highlight everything.

Take a look at this example:

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();
    }
}

In the first line, Bar is an inner class, and should be highlighted green. In the second line, Bar2 is a property of type Foo2, and should be highlighted black. Both Func and Func2 are functions, and should be highlighted black.

Here's how Visual Studio highlights that code.


The problem is that without context, it's impossible to find out whether it's a method or a type.

Take the following example:

var value = new Test();

Test();

This example instantiates a new Test and then calls the method Test. The only way to find out which is a class and which is a type is by having 1. the entire code base and 2. a compiler.

And then I haven't even touched invalid code.

That being said, I think that the current prettifier as used by SO does a terrific job of highlighting the code samples without any context whatsoever.


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

TextMate/E-TextEditor will generate HTML & CSS from syntax highlighting for many, many languages.

Here is what you do:

  1. Open the file in TextMate/E-TextEditor
  2. Select the language from the menu at the bottom of the screen if it doesn't choose it automatically
  3. Go to Bundles->TextMate->Create HTML From Document
    • This will create all the HTMl/CSS in a new document.
    • Note: Windows users also choose the 'TextMate' bundle (not 'E-TextEditor')
  4. Profit!

Note: You will have to install the C# bundle for C# syntax (every other common language is included). To do this, install the "Get Bundles" bundle, and use that to install the C# bundle.

EDIT: Reading the comments I realized TextMate is only a solution for Mac users. Sometimes I forget about Windows.

You can also use E-TextEditor for Windows. The steps are the same.

Need Your Help

Find a pattern in a Generic List

asp.net regex list arraylist generic-list

I have a Generic List and I'd like to search through the list for items that matches a certain pattern.

MVC manually serializing complex object or model binding

javascript c# asp.net-mvc asp.net-mvc-3

One of the largest issues I run into in MVC is when I attach a complex property (view model) to my model to use on a form. For example, I have a model called Customer.cs. This Customer has ( for