Подтвердить что ты не робот

Исправить для google-code-prettify w/С#

Prettify дает типы и методы одному и тому же классу при tokenizing С#, чтобы они были одинаковыми. Это потому, что методы - это pascal case в С# вместо случая верблюда, как в java. Это влияет на мой блог и весь код С# stackoverflow, поскольку они также используют prettify.

У кого есть исправление для этого?

Если нет, вы можете, по крайней мере, показать/проголосовать за официальную ошибку, о которой сообщалось в марте /2009 году, чтобы авторы взглянули еще раз.

4b9b3361

Ответ 1

Я действительно написал свою собственную библиотеку подсветки синтаксиса для решения таких проблем. Это довольно похоже на prettify, но вы должны явно указать язык.

Ответ 2

Можно, чтобы идентичный синтаксис имел разные значения. Просто недостаточно информации, чтобы правильно синтаксис выделял все.

Взгляните на этот пример:

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 выделяет этот код.

alt text

Ответ 3

Проблема заключается в том, что без контекста невозможно выяснить, является ли это методом или типом.

Возьмем следующий пример:

var value = new Test();

Test();

В этом примере создается новый Test, а затем вызывается метод Test. Единственный способ узнать, что является классом, а тип - иметь 1. всю базу кода и 2. компилятор.

И тогда я даже не коснулся недействительного кода.

Считаю, что текущий префитер, используемый SO, делает потрясающую работу по выделению образцов кода без какого-либо контекста.

Ответ 4

TextMate (OS X) или E-TextEditor (Windows)

TextMate/E-TextEditor будет генерировать HTML и CSS из подсветки синтаксиса для многих, многих языков.

Вот что вы делаете:

  • Откройте файл в TextMate/E-TextEditor
  • Выберите язык из меню в нижней части экрана, если он не выбирает его автоматически.
  • Перейдите к Bundles- > TextMate- > Создать HTML из документа
    • Это создаст все HTMl/CSS в новом документе.
    • Примечание. Пользователи Windows также выбирают пакет 'TextMate' (не 'E-TextEditor')
  • Profit!

Примечание. Вам нужно будет установить пакет С# для синтаксиса С# (в него будет включен любой другой общий язык). Для этого установите пакет "Get Bundles" и используйте его для установки пакета С#.

EDIT: чтение комментариев, которые я понял, TextMate - это только решение для пользователей Mac. Иногда я забываю о Windows.

Вы также можете использовать E-TextEditor для Windows. Шаги те же.