2

我已经拥有了几十个从不提供简单内容的编辑器,例如:

  • 区分类型关键字和指令关键字,以便我可以在它们上放置不同的颜色。
  • 跨平台使用像 qt gtk 等标准 GUI 库(记事本++,是的,我几乎恨你)。
  • 足够的键盘快捷键,例如重复行、注释选择和不错的查找替换。
  • 体面的任务缓和功能,例如单击数字行边距以选择整行。
  • Scintilla 或其他足够好的词法分析器可以突出显示足够多的不同事物,因为大脑编译代码是一回事,用眼睛快速识别什么是我认为重要的事情。

我只想支持非常基本的语言,比如 C、C++,也许是 Python,而不是 HTML 或 CSS。

Scintilla 是突出显示这些语言的好选择吗,词法分析器真的有必要吗?

QT 还不足以编写我想做的文本编辑器吗?我知道有 QScintilla,但是有没有理由我不应该使用集成了 lexer 的库?为什么 Scintilla 是一个这么好的库?

QT 对于这样的编辑器是一个不错的选择吗?(我还想在编辑器中硬嵌入 ProFont 以消除操作系统之间的任何不情愿的字体问题)。

编辑:简而言之,我想做一个编辑器,只有notepad++的语法高亮功能。这是我的主要目标,QScintilla 的使用可能比我想象的要难一些......

EDIT2:好吧,我找到了textadept,它并不为人所知,但非常棒。我没有设法制作我的词法分析器,因为我在 Windows 下还有其他事情要做,不幸的是它在 mac 上很慢。显然 Mac 上没有任何 Scite 官方版本。

4

8 回答 8

7

无论如何,C++ 都不是一种“非常基本的语言”。

为什么你真的想这样做?那里有很多开源代码编辑器。

于 2010-10-31T19:52:01.223 回答
5

如果您必须编写自己的编辑器,我建议您查看其他开源编辑器并检查您将哪些部分移植到您的编辑器。

移植现有工作和测试代码的片段通常比编写自己的代码并对其进行调试要好得多。

在仔细阅读了几个严肃的开源编辑器:Emacs、Eclips、CodeBlocks、CodeLight 等之后,我相信你会开始改变从头开始编写编辑器的想法。

-- Thomas Matthews
我的信息

于 2010-10-31T21:27:57.843 回答
2

如果您真的想这样做(听起来需要做很多工作),我会查看 ANTLR 来解析代码。您可能会从他们的 ANTLRWorks 展示中获得一些想法。将解析树链接到显示可能是相当多的工作,所以我会看看像 Eclipse 这样的 IDE 平台必须提供什么

于 2010-10-31T19:51:09.797 回答
1

你对 Java 还好吗?

如果是这样,请选择 Eclipse 技术:SWTJFace。后者为您提供org.eclipse.jface.text了具有许多功能的软件包。然后您可以在此基础上轻松滚动自己的编辑器。(我更喜欢基于 Eclipse 的编辑器而不是基于 Scintilla 的编辑器,我相信它们往往更高级且功能更丰富,但这是我个人的看法。)

但是,您可能想更进一步,为您的应用程序使用Eclipse RCP 框架......但是为什么不使用 Eclipse IDE 本身,只需添加您想要的任何插件作为插件。

Eclipse 代码库非常庞大,取决于您想要重用多少。

于 2010-12-04T14:03:37.287 回答
1

我会花一些精力尝试使用 emacs 颜色主题包和各种语言模式;看看你是否可以弯曲 lisp 来做你想做的事。你几乎肯定可以。在我看来,emacs 和您的一些努力将使您成为您的终极编辑器(请记住,emacs 实际上只是一个 DIY 编辑器工具包)。如果您无法将 emacs 弯曲成您想要的形状,那么您将很适合花费精力编写自己的形状。

于 2011-01-20T07:22:57.973 回答
1

我已经尝试为我目前正在处理的项目做类似的事情,我查看了QScintilla并不得不将其从我的项目中删除,因为当你嵌入到QGraphicsView我无法控制小部件图像的分辨率时,它似乎将文本绘制为图像,这就是我们所看到的,我玩增加了平滑度QFont并改善了它,但仍然不行。

因此,我在 QT 的代码库中找到了一个简单的代码编辑器,如果您查看,它会随 QT 的每个安装一起提供:

C:\Qt\4.7.3\src\scripttools\debugging\qscriptedit.h
C:\Qt\4.7.3\src\scripttools\debugging\qscriptedit.cpp

如果您转到OpenShapeFactory我尝试嵌入代码编辑器的源代码:检查我如何获得语法 Highlighter 和自动完成功能:

此小部件使用 qt 附带的 qscriptedit 小部件,您可以将自己的关键字添加到文件中的语法高亮器以及自动完成下拉列表中。

这是头文件,scriptwidget.h和实现scriptwidget.cpp可作为整个项目代码的一部分。

下一阶段是查看 QTCreator 并查看他们已经拥有的代码.

祝您在这个方向上好运,如果您找到解决方案,请将其发送过来,:) 请注意上面的存储库链接,如果我找到一种方法,我可能会追你答案。

于 2011-09-22T08:36:38.773 回答
0

就像其他人所说的那样,它可能比它的价值更麻烦,但如果你真的想这样做,Qt 是一个不错的选择,因为它是跨平台的。使用 QSyntaxHighlighter 进行关键字/类型突出显示,并充分利用 Qt 对键盘快捷键的支持。

于 2010-11-04T14:35:17.070 回答
0

使用 C、QT 和 Lua 之类的东西作为脚本引擎。

于 2011-02-11T09:23:15.763 回答