Я использую WP-GeSHi в WordPress, и в значительной степени я очень доволен этим. Однако есть несколько небольших сценариев, в которых подсветка цвета слишком агрессивна, когда ключевое слово:
- имя переменной (обозначается ведущим
@) - часть другого слова (например,
INвINSERTED) - комбинация (часть имени переменной, например
JOINиINв@JOINBING) - внутри квадратных скобок (например,
[status])
Некоторые ключевые слова чувствительны к регистру, а другие - нет. В приведенном ниже скриншоте суммируются различные случаи, когда это происходит не так:

Теперь код в GeSHi.php довольно подробный, и я отнюдь не эксперт PHP. Я не боюсь, что мои руки здесь немного грязные, но я надеюсь, что кто-то еще внесет исправления в этот код и может предоставить некоторые указатели. Я уже реализовал обходное решение, чтобы предотвратить @@ROWCOUNT от неправильного выделения, но это было легко, поскольку @@ROWCOUNT определен - я просто перетасовал массивы вокруг так, чтобы он был найден до ROWCOUNT.
Я бы хотел, чтобы GeSHi полностью игнорировал ключевые слова, которые не являются целыми словами (независимо от того, префикс ли они @ или сразу окружены другими буквами/цифрами). JOIN должен быть серым, но @JOIN и JOINS не должен. Мне также хотелось бы игнорировать ключевые слова, которые находятся внутри квадратных скобок (в конце концов, так мы говорим, что Management Studio не выделяет цвет, а также то, как мы говорим движку SQL игнорировать зарезервированные слова, ключевые слова и недопустимые идентификаторы).
