如何将 Ace 编辑器中的所有文本保存在 WT 中?

Posted

技术标签:

【中文标题】如何将 Ace 编辑器中的所有文本保存在 WT 中?【英文标题】:How to save all text from Ace editor in WT? 【发布时间】:2013-05-01 12:42:38 【问题描述】:

所以我在一个 WT 项目中嵌入了一个 Ace 编辑器,并将 Ace.js 文件的副本加载到其中作为测试以查看它的外观。加载很好,所以现在我尝试保存它,我注意到我的保存函数没有被调用。调试了一段时间后,我注意到如果我要保存的文件大于 70000-80000 个字符,则不会调用我的保存函数,如果文件较小,则可以正常调用并传递数据。尝试保存大文件时如何绕过此限制?我在 WT 项目中运行的代码可以在下面看到,关于如何在此处嵌入它的更多详细信息Using ACE with WT

WText *editor;

MyClass::MyClass(const WEnvironment& env)
: WApplication(env)

wApp->require("lib/src/ace.js");
// A WContainerWidget is rendered as a div
editor = new WText("function()\n hello.abc();\n\n", root());
editor->setInline(false);
editor->resize(500, 500);

std::string editor_ref = editor->jsRef(); // is a text string that will be the element when executed in JS

std::string command = 
  editor_ref + ".editor = ace.edit(" + editor_ref + ");" +
  editor_ref + ".editor.setTheme(\"ace/theme/monokai\");" +
  editor_ref + ".editor.getSession().setMode(\"ace/mode/javascript\");";

editor->doJavaScript(command);    

JSignal <std::string> *jsignal = new JSignal<std::string>(editor, "textChanged");
jsignal->connect(this, &MyClass::textChanged);

WPushButton *b = new WPushButton("Save", root());

command = "function(object, event) " +
  jsignal->createCall(editor_ref + ".editor.getValue()") +
  ";";

b->clicked().connect(command);


void MyClass::textChanged(std::string incoming)



现在,使用上面的代码,当按下 Save 按钮时将调用 textChanged 函数。但是,如果加载了一个大文件,我使用了下面的函数,并将 "function()\n hello.abc();\n\n" 替换为对它的调用。

std::string MyClass::ReadFile(std::string path)

std::ifstream in(path, std::ios::in | std::ios::binary);
if(in)

  std::string contents;
  in.seekg(0, std::ios::end);
  contents.resize(in.tellg());
  in.seekg(0, std::ios::beg);
  in.read(&contents[0], contents.size());
  in.close();
  return(contents);

throw(errno);

如前所述,我加载了大约 15,000 行长度的 Ace.js。这导致我的保存调用失败。虽然我确信超过 80,000 个字符的任何其他文件也会导致它失败。提前谢谢!

【问题讨论】:

【参考方案1】:

可能需要增加 wt_config.xml 中的 max-request-size。默认为 128K。

【讨论】:

我目前没有在我的项目中使用 wt_config.xml,我会尝试添加它并设置 max-request-size。

以上是关于如何将 Ace 编辑器中的所有文本保存在 WT 中?的主要内容,如果未能解决你的问题,请参考以下文章

如何保存 Rstudio 历史中的所有图表

单行 Ace 编辑器

如何将带有主题和扩展名的 ACE 编辑器存储在单个文件中?

如何在我的网站中嵌入 ace 编辑器 [重复]

web端代码文本编辑器ACE

如何侦听 Ace Editor 更改事件并做出反应