问题标签 [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 投票
1 回答
1564 浏览

python - 闪烁中的交替行着色

我正在使用来自 wxPython 的wxStyledTextCtrl ,它是Scintilla组件的包装器。

有没有办法在它上面获得交替的行着色(一种背景颜色的奇数行,甚至另一种颜色的行)?我正在使用内置的 python 样式器来突出显示关键字。

0 投票
1 回答
583 浏览

c - 闪烁和线程安全

我在 Windows (Win32, C/C++) 上使用 Scintilla 编辑控件。该控件是在 WndProc 中创建的。我有第二个线程,用 Boost.Thread 创建,它充当拼写检查器,并用红色波浪线标记拼写错误的单词。因此,我有两个线程更改 Scintilla 控件的内容。

起初,程序在编辑文本时崩溃。所以我研究了 Scintilla 的线程安全性。我发现的信息很少,但我设法在文档中得到了这个引用:

如果直接调用从不同线程执行到 Scintilla 窗口的本机线程会导致问题,在这种情况下,应使用 SendMessage(hSciWnd, SCI_*, wParam, lParam) 与窗口的线程同步。

当然,我使用的是直接调用,因此我将拼写检查线程中的所有调用更改为 SendMessage,现在程序不再崩溃。最后,这就是问题所在,我解决了这个问题,还是我会遇到 Scintilla 和多线程的其他怪癖?

0 投票
5 回答
27056 浏览

c# - 如何在 C# 项目中使用 Scintilla .NET?

我正在尝试在项目中使用 Scintilla .NET(我想要一个好的编辑器 + 语法突出显示等)。不幸的是,当我在项目中引用二进制文件时,我似乎无法真正使用 Scintilla 控件。我得到两个不同的错误。

  1. 第一次发生在添加 SciLexer.dll 作为对我的项目的引用时。我收到一条消息: 无法添加对 SciLexer.dll 的引用。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。

  2. 第二个错误发生在我尝试使用 ScintillaNET.dll 中的控件时。如果我尝试将组件拖到表单中,我会收到以下消息:无法创建组件 Scintilla。错误消息如下: System.ComponentModel.Win32Exception: %1 is not an valid Win32 application at ScintillaNet.Scintilla.get_CreateParams()

对于这些问题中的任何一个的任何帮助将不胜感激。作为记录,我正在运行在 64 位 Windows 7 平台上运行的 Visual Studio 2008。

谢谢。

0 投票
2 回答
872 浏览

c# - 无法在运行时以编程方式影响闪烁控制

我正在尝试在我正在处理的应用程序中使用ScintillaNET 控件。我将控件拖放到我的表单中并运行表单。该控件出现在窗体上。这很好。此外,如果我在控件的属性编辑器(例如,ConfigurationManager.Language)中设置任何属性,我可以输入该语言并看到语法高亮显示。

当我尝试以编程方式更改属性时,我遇到了问题。例如,我尝试将文件中的文本加载到表单中(我在表单的加载中执行此操作)。文字不显示。我似乎也无法显示行号或执行任何其他数量的任务(包括以编程方式更改语言)。

知道我可能做错了什么吗?即使像下面的代码这样简单的东西似乎也不起作用:

0 投票
2 回答
1715 浏览

mouse - ScintillaNet - 计算出用户点击了哪一行

我正在使用ScintillaNet文本框控件来显示一些搜索结果,并且我希望能够检测用户何时双击/右键单击结果中的一行,以便我可以计算出他们点击的是哪个点击。

有没有人对这样做的最佳方式有任何想法?我可以想到几种方法,但它们对我来说似乎都有点“hacky”。

0 投票
1 回答
129 浏览

c# - 在 C# 组件中访问鼠标点击

我正在使用 ScintillaNET 组件,并尝试在页边空白处捕获点击,因为这将决定我如何响应。不幸的是,边距捕获了鼠标事件(据我所知,并没有提供一种获取点击信息的方法——点击次数、点击鼠标按钮等)。

如果确实如此(我无法直接获取该信息),那么在触发 MarginClick 事件之前捕获鼠标正在做什么的另一种方法是什么?

谢谢你的帮助!

0 投票
1 回答
1153 浏览

python - 为什么我的 QsciLexerCustom 子类在 PyQt4 中使用 QsciScintilla 不起作用?

我的最终目标是使用 PyQt4 和 Python 2.6 在 QsciScintilla 中突出显示 Erlang 语法。我在 Windows 7 上运行,但也需要 Ubuntu 支持。

PyQt4 缺少“base”scintilla 所具有的 Erlang 词法分析器/荧光笔的必要包装代码,所以我想我会在 QsciLexerCustom 之上编写一个轻量级的封装代码。这有点问题,因为在获取/设置文本子范围时,Qsci 包装器似乎真的想谈论行+索引而不是从开始偏移。同时,词法分析器获取参数作为偏移量。现在,我得到了整个文本的副本,并根据需要将其拆分。

我有以下词法分析器,并使用 setLexer() 应用它。当我打开一个新文件并将其设置为词法分析器时,它会获得所有适当的调用,并根据它正在做的事情打印一堆适当的行......但文档中没有样式。我尝试将所有定义的样式设为红色,但文档仍然是顽固的黑白,所以显然这些样式并没有真正“生效”

我究竟做错了什么?如果这里没有人知道,那么人们可能真正了解这些事情的适当讨论论坛是什么?(这是 Python、Qt 和 Scintilla 之间有趣的交集,所以我想知道的人很少)

让我们假设 prefs.declare() 只是设置了一个返回给定键值的字典(我已经验证了这一点——这不是问题)。让我们假设 scintilla 被合理地正确地构建到它的宿主窗口 QWidget 中。具体来说,如果我应用捆绑的词法分析器(例如 QsciLexerPython),它会生效并显示样式文本。

应用于 QsciScintilla 小部件,如下所示:

...在我的文档窗口类中...

让我们假设应用程序的其余部分也可以工作(因为它可以 :-)

0 投票
1 回答
716 浏览

vb.net - 在不丢失格式的情况下向 Scintilla 添加文本

我开始在 VB.NET 中使用 scintilla 进行开发,并且正在创建一个串行终端程序。Scintilla 控件显示在我的计算机串行端口中已接收到哪些数据。

我需要以编程方式添加文本来控制。

当我使用:

文本被添加到 Scintilla,但它会清除添加前控制的文本中存在的所有格式。

所以,我的问题:

1 - 我向 Scintilla 添加文本的方式是否正确?我没有找到方法“AddText()”。

2 - 为什么我在添加文本时会丢失文本格式?

0 投票
2 回答
2145 浏览

scroll - 如何在 Scintilla 中进行自动滚动?

我有一个使用 Scintilla 的简单 VB.NET 应用程序。我不知道如何使控件在添加文本时自动滚动。

任何人都可以帮忙吗?

谢谢

0 投票
2 回答
2639 浏览

winforms - 如何在 Windows 7 64 位的 Visual Studio 2008 Designer 中加载 SciLexer.dll?

我们使用 Scintilla.NET (1.7) 组件开发了一个 WinForm 应用程序,该组件使用 SciLexer.dll(未管理)。在运行时,我们分发 32 位和 64 位 SciLexer.dll,并在应用程序启动时加载正确的(一切正常)。

在我们的新开发环境(Windows 7 64 位)上,我们所有的解决方案都可以正常构建和运行,但是 WinForm 可视化设计器不会加载我们使用 Scintilla.NET 的表单/控件,因为它无法加载正确的 SciLexer.dll:

Visual Studio 2008 在哪里寻找非托管库?我尝试将 64 位 SciLexer.dll 放在 SysWOW64 中,在引用 ScintillaNET.dll 的文件夹中,在 PATH 系统变量中添加一个文件夹,在项目中添加一个文件夹引用,但我一直收到此错误。

任何帮助表示赞赏。