4

我希望将 CKeditor 与 GeSHi 一起使用,但我遇到了一些重大困难。发生的情况是,如果我创建了一条新内容,然后禁用 CKeditor,我只是在编写纯 HTML,我可以将代码片段包含在<pre> </pre>标签中。如果我然后保存,GeSHi 会很好地完成它的工作,并且片段看起来不错。

但是,如果我随后尝试编辑那段内容,CKeditor 会弄乱代码的格式,特别是用特殊的转义序列替换很多字符,并且还试图关闭它认为是 HTML 标记但实际上是 C++ 包括文件,例如#include <iostream>将使 CKeditor 将 a</iostream>放在文本的末尾。然后,在最好的情况下,我的代码看起来很糟糕。

在其他情况下,行为真的很奇怪:页面不会加载,而是给我一个服务器错误。我认为这是因为,在服务器端,CKeditor 对代码片段所做的一些更改导致 GeSHi 崩溃,反之亦然。

这是我在纯文本编辑器中逐字输入并将其包含在标签中后看起来正确的示例<pre>代码:

// All rights reserved
// Email: firstname.lastname@url.com
//////////////////////////////////////////////////////////////////////

#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: firstname.lastname@url.com
//////////////////////////////////////////////////////////////////////

#include &quot;stdafx.h&quot;
#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 格式化这一事实。另外,根据下面的答案/评论,我已经尝试过 Peter Petrik 的方法,这里概述了,并且崩溃行为仍然发生。

谢谢。

4

2 回答 2

5

您使用的是哪个版本的 Drupal/CKEditor/GeSHi?我会验证输入格式(管理员/设置/过滤器)并确保您使用的任何格式都不会使您的代码与其他过滤器混淆。还要验证允许的 HTML 标签。

于 2011-03-03T21:19:49.467 回答
1

看看这个 - 它可能有助于ckeditor-and-geshi-filter

于 2011-02-24T14:49:25.810 回答