问题标签 [scintilla]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
876 浏览

c# - 从 .NET 文本/闪烁框中读取行而不使用太多内存?

我必须创建一个能够很好地处理读取大文件的 C# 程序。

例如,我有一个 60+ mB 的文件。我将所有内容读入一个闪烁框,我们称之为 sci_log。该程序使用大约 200mB 的内存来实现此功能和其他功能。这仍然是可以接受的(并且少于 Notepad++ 用于打开此文件的内存量)。

我还有另一个闪烁盒,sci_splice。用户输入一个搜索词,程序在文件中搜索(如果文件长度足够小,则搜索 sci_log - 没关系,因为它是双向的)以找到 regexp.match。当它找到匹配项时,它将该行与具有先前匹配项的字符串连接起来,并增加一个临时计数变量。当 count 为 100(或 150 或 200,实际上是任何数字)时,我将输出放入 sci_splice,调用 GC.Collect(),然后重复接下来的 100 行(设置 count = 0,将字符串归零)。

我现在没有代码,因为我是用家用笔记本电脑写的,但问题是它使用了很多内存。200mB 的内存使用量跃升至 1gB 以上,而且看不到尽头。这只发生在具有大量正则表达式匹配的搜索中,因此它与字符串有关。但问题是,GC 不会释放内存吗?还有,为什么涨这么高?为什么它会超过三倍(最坏的情况)是没有意义的。即使所有 200mB 只是内存中的日志,它所做的只是读取每一行并存储它(最坏的情况)。

经过更多测试后,添加行时使用大量内存的 Scintilla 似乎有问题。行的初始读取在几分之一秒内具有高达 850mB 的内存峰值。我想我只需要对输出进行分页。

0 投票
1 回答
8973 浏览

c# - System.Design 去哪儿了?

我正在制作一个使用 ScintillaNet 的 C# 项目,它说:

无法解析引用的程序集“ScintillaNet”,因为它依赖于“System.Design,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,它不在当前目标框架“.NETFramework,Version=v4”中.0,配置文件=客户”。请删除对不在目标框架中的程序集的引用,或考虑重新定位您的项目。

我尝试添加对 的引用System.Design,但它在我的列表中不存在。我需要在某个地方下载吗?我有 Microsoft Visual Studio 10。

0 投票
1 回答
1326 浏览

c# - 闪烁自定义语法突出显示不起作用

我有一个在 C# 中创建的 Scintilla 控件,但语法突出显示不起作用。它正确设置了字体,告诉我正在加载文件,但语法突出显示根本不起作用:

配置文件是这样的:

http://codepad.org/DAjCrlPT

在 langs.xml 中。(代码不适合这里。)有人能告诉我为什么这不起作用吗?

0 投票
3 回答
3670 浏览

lexer - 向 scintilla/scite 添加一个新的词法分析器(...最终是 wxPython StyledTextCtrl)

有没有人成功地将词法分析器添加到闪烁?

我一直在遵循 http://www.scintilla.org/SciTELExer.html 上的简短说明 - 甚至在http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla发现了秘密的额外说明更改 Lexers 集)

一切都可以编译,我可以很好地将词法分析器添加到 SciTE,但是我的 ColouriseMapfileDoc 方法没有被调用(printf 不会产生输出)。如果我将相同的代码添加到例如 ColouriseLuaDoc 词法分析器中,一切都很好(printf确实会产生输出)。

具体来说我有

  1. scintilla/include/Scintilla.iface,添加val SCLEX_MAPFILE=99
  2. 以及任何词汇类 ID
  3. 在 scintilla/include 目录中运行HFacer.py并确认SciLexer.h文件已更改。
  4. LexMapfile.cxxColouriseMapfileDoc函数创建
  5. 在文件的末尾,将词法分析器 ID 和名称与函数相关联:

    LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");

  6. 运行LexGen.py以生成所有 makefile(根据秘密说明)

  7. 通过克隆创建了一个新的 SciTE 属性文件scite/src/others.properties
  8. 设置一些样式
  9. scite/src/SciTEGlobal.properties添加到$(filter.conf)的定义中open.filter
  10. 将此语言添加到 SciTE 的语言菜单中,
  11. 构建了 Scintilla 和 SciTE。
  12. 抱怨和诅咒。

除了第 12 步之外,我做错了什么?

0 投票
1 回答
1469 浏览

c# - 如何覆盖 ScintillaNet 中的粘贴操作?

我正在使用 ScintillaNet 的 Scintilla 控件并且我需要对粘贴操作进行一些控制(以便能够检查某些内容和/或更新要粘贴的文本)。

我试图创建 Scintilla 控件的子类并覆盖 WndProc 方法。然后,我截获了 WM_PASTE 消息(0x0302),没有运气。我从来没有抓住它。

这是我使用的代码:

任何的想法?

0 投票
1 回答
4750 浏览

keyboard-shortcuts - 如何重置记事本++中的所有键盘快捷键?

我已经删除了 SCI_DELETEBACK 的快捷方式,因此我的退格键现在输出退格字符而不是实际删除字符。

无论出于何种原因,都无法重新分配此密钥(可能是因为他们认为没有人会愚蠢到尝试更改它)所以现在我被卡住了。

理想情况下,我想将退格键重新分配给 SCI_DELETEBACK 命令,但我认为重置批次会更容易。

证明我是错的!

谢谢

0 投票
8 回答
6531 浏览

c++ - 我想制作自己的源代码编辑器,有什么好的选择?

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

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

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

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

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

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

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

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

0 投票
1 回答
1753 浏览

c++ - 文本编辑器 API。用于实验性 IDE 的 Scintilla。你用别的东西吗?

我在这个周末发现了 Scintilla/Notepad++ API。由于网上有一个很好的用于 Notepad++ 插件的模板 vcproj,所以我可以非常快速地开始使用一些伪代码源。

我刚刚简要查看了Scintilla 文档,其中公开了看起来很有希望的 API。有时它对我来说仍然很模糊,有时不像我期望/梦想的那样功能齐全,但现在这真的是毫无意义的细节。

所以现在是我尝试一种我喜欢的语言的时候了,我暂时给它起了个绰号“实体”。除了为它设计一个轻量级的 IDE 之外,最好的办法是什么。

因此,我将在 Notepad++/Scintilla 环境中投入大量时间。

我没有考虑过使用 Emacs,因为我从来没有习惯它。

但是,如果您使用除 Scintilla 之外的其他类型的文本编辑器 API,最好使用 C++,因为这是我的语言经验……您会使用/使用过哪些其他文本编辑器 API?

只是想在深入研究之前确定我的选择。

0 投票
0 回答
1210 浏览

c++ - QScintilla:如何创建新的词法分析器或修改现有的词法分析器?

我发现 C++ 突出显示的默认词法分析器不够具体。

我希望至少能够为以下内容指定不同的颜色:

类型关键字(void、int、float 等)指令关键字(if while do return for 等)类相关关键字(模板类虚拟朋友)类型修饰符关键字(静态 const extern unsigned 等)

我在 LexerCPP 源代码中找到了这个:

ETC

我试过这个 - 将 qscilexercpp.cpp 复制/粘贴到新文件名 qscilexercxx.cpp - 用适当的开关替换上面的代码:

创建适当的枚举后:

在现有的末尾。

现在我的大部分文本都是黑色的,我很确定我错过了关于枚举和返回的 char 关键字数组之间的链接的一些东西......

有人可以指导我做某事或帮助我吗?

0 投票
2 回答
2011 浏览

c++ - 自定义 C++ 闪烁词法分析器

我在哪里可以告诉 scintilla 识别不同的关键字集?我想给它们上色,就像记事本++一样。