Я надеялся использовать CKeditor с GeSHi, но у меня возникли серьезные трудности. Что происходит, если я создаю новый фрагмент контента, а затем отключаю CKeditor, поэтому я просто пишу простой HTML, я могу заключить фрагмент кода в теги <pre> </pre>
. Если я затем сохраню, GeSHi прекрасно справляется со своей задачей, и фрагмент выглядит хорошо.
Однако, если я затем попытаюсь отредактировать этот фрагмент контента, CKeditor возится с форматированием кода, в частности, заменяя множество символов специальными escape-последовательностями, а также пытаясь закрыть то, что он считает тегами HTML, но на самом деле включает C++. файлы, например #include <iostream>
заставит CKeditor поместить </iostream>
в конец текста. Тогда, в лучшем случае, мой код просто выглядит плохо.
В других случаях поведение действительно странное: страница не загружается и вместо этого выдает ошибку сервера. Я предполагаю, что это потому, что на стороне сервера некоторые изменения, внесенные CKeditor в фрагмент кода, приводят к сбою GeSHi или наоборот.
Вот пример кода, который выглядел правильно после того, как я ввел его дословно в текстовом редакторе и заключил в теги <pre>
:
// All rights reserved
// Email: [email protected]
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include <fstream>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
myClass::myClass()
{
m_lthing = NULL;
m_athing = NULL;
m_bthing = NULL;
m_lthingthing = NULL;
m_athingthing = NULL;
m_bthingthing = NULL;
}
Однако, если просто нажать «Изменить», а затем снова «Сохранить» без внесения каких-либо изменений, CKeditor возится с кодом, который теперь выглядит так:
// All rights reserved
// Email: [email protected]
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include <fstream>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
myClass::myClass()
{
m_lthing = NULL;
m_athing = NULL;
m_bthing = NULL;
m_lthingthing = NULL;
m_athingthing = NULL;
m_bthingthing = NULL;
}</fstream></iostream>
Есть ли у кого-нибудь какие-либо мысли по этому поводу или кто-нибудь может порекомендовать хорошую альтернативу системе, которую я сейчас пытаюсь использовать? Я не слишком привязан к CKeditor или GeSHi, хотя до сих пор я был доволен CKeditor, и мне нравится тот факт, что GeSHi форматирует MATLAB. Кроме того, согласно ответу/комментарию ниже, я уже пробовал подход Питера Петрика, описанный здесь, и сбой все еще имел место.
Спасибо.