Сколько раз говорю себе: не экспериментировать с рабочей версией блога. Но, как обычно, хочется сделать все побыстрее, а в результате получается черте как.
И вот, на днях искал я плагины для подсветки кода, даже несколько постов на эту тему написал (этот и этот).
Парочка найденных плагинов меня заинтересовала и я решил попробовать их установить.
Отзывы о них были очень хорошие, и я решил, что ничего страшного не произойдет, если я сразу установлю их на сервере.
К тому же недавно я игрался с локальной версией блога, и ее нужно было заново устанавливать и настраивать 🙂 .
Активирую первый (Code Autoescape) плагин, проверяю, вроде все нормально, работает правильно.
Для справки. Этот плагин заменяет спецсимволы html, которые находятся внутри тегов code, на их эскейп последовательности. Другими словами, превращает <
в <
.
Больше всего в этом плагине мне понравилось то, что он работает с комментариями.
Написал очередной пост уже с использованием этого плагина, продолжаю эксперименты.
Теперь я решил заменить плагин подсветки синтаксиса. В принципе, в Dean's Code Highlighter меня все устраивало, кроме нумерации строк. Точнее мне не нравилось, что номера копируются вместе с кодом. Проблема не большая, т.к. я всегда выкладываю архивы с примерами (если, конечно, они состоят не из пары строк).
Тем не менее, мне хотелось исправить ситуацию. А из этой статьи я узнал о плагине — WP-Syntax.
Фокус в том, что и Dean's Code Highlighter, и WP-Syntax используют одну и туже библиотеку подсветки синтаксиса — GeSHi. И, судя по описанию, являются взаимозаменяемыми.
Отключаю Dean's Code Highlighter, активирую WP-Syntax, вроде все нормально. Я обрадовался и вместо того, чтобы внимательно все проверить решил заняться более интересными вещами 🙂 .
Естественно, на следующий день практически все комментарии касались работы блога 🙂 . Денис даже скриншот сделал, за что ему отдельное спасибо.
В результате, оказалось, что все плагины хорошие и работают, как и должны, но вот перейти с одного на другой так просто не получится.
Итак, основных проблем было три.
1) Если вставить вставить тег pre между тегами code, то Code Autoescape не экранирует его и разметка превращается непонятно во что.
2) Несмотря на то, что и Dean's Code Highlighter, и WP-Syntax используют GeSHi, работают они по-разному. WP-Syntax экранирует символы <
, >
и &
, а Dean's Code Highlighter – нет. В старых постах я вставлял код с уже экранированными символами. В результате получилось, что WP-Syntax заменил в них &
на &
и все символы <
, >
превратились в <
, >
.
3) К тому же у этих плагинов есть одна очень не приятная особенность. Они получают полный текст поста и возвращают его же, но уже с подсветкой. При этом, если во время их работы происходит ошибка, то возвращается пустая строка. На практике это вылилось в то, что некоторые посты у меня состояли из названия и комментариев 🙂 .
В конечном итоге я вернул Dean's Code Highlighter, правда в немного измененном виде. Отключил вставку ссылок на документацию по ключевым словам. Все равно эти ссылки вставлялись только для самых распространенных функций (вроде array, echo, …) и вряд ли кто-то ими пользовался.
В общем, менять плагины для подсветки кода в ближайшее время я не буду 🙂
И нужно распечатать и приклеить на монитор напоминание «Никаких экспрериментов с рабочим сервером!» 🙂 ).