Ответ 1
Я действительно написал свою собственную библиотеку подсветки синтаксиса для решения таких проблем. Это довольно похоже на prettify, но вы должны явно указать язык.
Prettify дает типы и методы одному и тому же классу при tokenizing С#, чтобы они были одинаковыми. Это потому, что методы - это pascal case в С# вместо случая верблюда, как в java. Это влияет на мой блог и весь код С# stackoverflow, поскольку они также используют prettify.
У кого есть исправление для этого?
Если нет, вы можете, по крайней мере, показать/проголосовать за официальную ошибку, о которой сообщалось в марте /2009 году, чтобы авторы взглянули еще раз.
Я действительно написал свою собственную библиотеку подсветки синтаксиса для решения таких проблем. Это довольно похоже на prettify, но вы должны явно указать язык.
Можно, чтобы идентичный синтаксис имел разные значения. Просто недостаточно информации, чтобы правильно синтаксис выделял все.
Взгляните на этот пример:
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 выделяет этот код.
Проблема заключается в том, что без контекста невозможно выяснить, является ли это методом или типом.
Возьмем следующий пример:
var value = new Test();
Test();
В этом примере создается новый Test
, а затем вызывается метод Test
. Единственный способ узнать, что является классом, а тип - иметь 1. всю базу кода и 2. компилятор.
И тогда я даже не коснулся недействительного кода.
Считаю, что текущий префитер, используемый SO, делает потрясающую работу по выделению образцов кода без какого-либо контекста.
Вот что вы делаете:
Примечание. Вам нужно будет установить пакет С# для синтаксиса С# (в него будет включен любой другой общий язык). Для этого установите пакет "Get Bundles" и используйте его для установки пакета С#.
EDIT: чтение комментариев, которые я понял, TextMate - это только решение для пользователей Mac. Иногда я забываю о Windows.