我需要一个跨平台的编辑器控件来用作内部工具中的 GUI 部分。控制可能是商业性的,但价格合理。
所需功能:
- 平台:Win32、OS X、Linux
- UTF-8 支持
- 对文本样式(或至少颜色)的细粒度运行时控制
- 不错的低级纯 C API,没有通常可怕的膨胀
- 不应该阻止我拥有这些功能(即使我必须自己实现它们):
- 撤销重做
- 复制粘贴
- 上下文菜单,取决于文本中的点击位置
- 工具栏,取决于文本中的光标位置
- 侧边栏面板,取决于文本中的光标位置
实际上上面需要的不是简单的控制,而是整个跨平台的GUI库。
丢弃的选项:
- 闪烁和后代
- FLTK
- 狐狸工具包
- gtksourceview
更新:
注意:我在这里写了一些半写的丢弃推理,我很抱歉。Scintilla 确实可以在 OS X 上运行。但是,如果我理解正确,则 Scintilla 的 API 是 C++ 语言。
用例:
我的用例是编写自定义的“半刚性”逻辑编辑器,用户可以自由地复制粘贴,在他希望的地方添加评论,甚至如果他愿意,甚至可以直接输入文本。但是文本结构是逻辑树的一种严格的自然语言表示(本质上有点像 AST)。我计划编写一些类似智能感知(或类似代码模板)的东西作为主要创作工具(而不是手动输入逻辑)。
顺便说一句,存储格式不是纯文本,而是提到的逻辑树的内部表示(带有注释和空格等元信息)。
所以,我有所有必要的信息来自己渲染所需颜色的文本。我不需要任何外部词法分析器等。