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 ja开发者_运维百科va. 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.
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.
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.
- Website
- Demo
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:
- Open the file in TextMate/E-TextEditor
- Select the language from the menu at the bottom of the screen if it doesn't choose it automatically
- 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')
- 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.
精彩评论