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