问题标签 [gtksourceview]

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 回答
92 浏览

regex - 匹配模糊模式,没有前面的单词,但只出现一次

从行的开头开始,我有类型@variable a 2为 的行。关键字及其标识符@variable是已知且固定的。变量可以[_a-zA-Z]作为第一个字符,然后作为第二个字符,也可以是数字或组合。它们之间至少有一个空格隔开,值至少有一个空格隔开variable,值也可以是表达式,比如(1+2)/2,或其他变量b,因此它以数字、字母或括号开头。后面的内容可能是很多东西,不重要(其中还有换行符)。

我想要做的是匹配变量,但前提是它variable是紧随其后的第一件事,然后是一个值或表达式。这是我最后一次尝试后的结果:

我尝试了各种组合(也涉及到锤子),但我要么无法匹配,要么匹配可能跟随的变量的每个匹配项(比如2,看 上帝的 上)。向后看总是会给出一个lookbehind not fixed或一些这样的错误。我也尝试过prefix/suffix/keywordkeyword你在上面看到的模糊匹配在哪里,但这也不起作用。搜索网络显示\K,这对我没有任何帮助。我知道匹配可能会更好,例如,一个简单的下划线可以作为变量传递,我想我可以做到,但现在我只想看到它正确突出显示。我可能应该提到我不精通PCRE。有解决办法吗?

抱歉,我忘了在 GtkSourceView 中为 gEdit 添加,但我认为这是基于 PCRE 的(?)。

0 投票
1 回答
155 浏览

gedit - 添加没有 root 访问权限的 gtksourceview 自定义语言

我正在尝试添加一种新的 gtksourceview 自定义语言以与 gedit 一起使用,但我没有 root 访问权限,也没有 sudo 权限来更改 /usr/<...> 目录。

有没有其他选择?

我们的系统管理员不愿意更改 /usr/<...>

0 投票
1 回答
49 浏览

c - 我想要更大的 pixbuf 渲染到 GtkSourceGutter

似乎使用渲染的源标记GtkSourceGutterRenderer的大小与GtkSourceView. 我想要更大的 pixbufs,而不会使文本字体大小更大,为了实现这一点,我得出结论我必须子类化一个小部件并覆盖它的draw信号处理程序。

但是我不知道要在哪个小部件上进行子类化。你们当中肯定有人知道吗?

0 投票
0 回答
255 浏览

c++ - 为什么我不能在 GtkBuilder 中使用 GtkSourceView,通过 Glade 加载文件?

我在 Glade 中创建了一个 *.ui 文件,它不会与 GtkBuilder 一起加载。“无效的对象类型'GtkSourceView'”

GEdit 使用 GtkSourceMap,我也无法做到这一点。我已经搜索了互联网,但没有一个答案有效,即安装 libgtksourceviewmm 等。

我希望能够使用它,但它失败并出现错误:无效的对象类型'GtkSourceView'。

编辑:添加了 cmake 文件

0 投票
0 回答
79 浏览

xml - gtksourceview / gedit syntax-highlighting:突出显示“shell”子部分

我正在为nextflow语言编写一个.lang gtksourceview/gedit 文件。在这种语言中,有些部分以某些语句开头和结尾,并包含一些语句。(我的 xml/lang 文件在这里:https ://github.com/lindenb/nextflow.lang/blob/master/nextflow.lang )"""shell

我正在尝试使用突出显示该shell部分

但它不起作用。“粉红色”部分不会在之后停止"""(右下面板)。

我怎样才能解决这个问题 ?

谢谢。

在此处输入图像描述

0 投票
0 回答
45 浏览

gtk - 使用双换行作为-GtkSourceView 中的元素

我正在研究 GtkSourceView 的语言定义。我有一个以“@LI:”开头并以双换行结尾的元素。第一行应该有不同的风格,然后元素的其余部分另一种风格。

我现在的问题是,我找不到与段末尾的双换行符匹配的 [...] 定义。[\r\n] 之类的东西不起作用。元素在文件末尾结束。

这是我使用的标记示例:

这是我的 .lang 文件的一部分。

谢谢你的帮助!

0 投票
0 回答
43 浏览

syntax-highlighting - 如何修改单个的格式选项在 GEdit 的语法高亮定义中?

我为 GEdit 做了以下语言定义,这是一种旨在保存测量日志的 XML 方言。我把它作为对 DocBook 语言定义的修改。

文件:lcs.lang

如您所见,有一个名为formatting-elements的上下文。

然后我做了一个语法高亮定义,作为一个众所周知的公共文件的修改。

文件:militarygreen.xml

一切都按预期工作。

现在我想修改语法定义,使“formatting-elements”上下文的关键字(但不是关键字本身)包含的字符串以特殊方式格式化:例如:语句

在 GEdit 中应该出现 <b>短语一个</b>,而语句

在 GEdit 中应该出现 <i>短语二</i>

如何设置这样的修改?

更新

我已通过以下方式修改了文件:

文件:lcs.lang

换句话说,我添加了上下文:

然后我按以下方式编辑了语法文件:

文件:militarygreen.xml

换句话说,我添加了样式定义

但它不起作用。

我的错在哪里?

0 投票
1 回答
433 浏览

gtk3 - 如何使用 GtkSourceView 库应用样式

我正在尝试设置 GtkSourceView 对象的样式,特别是我想更改行号的颜色。我正在阅读https://developer.gnome.org/gtksourceview/stable/style-reference.html。我可以改变text,但不能line-numbers。文件说:

line-numbers :左边距的文本和背景颜色,在其上绘制行号。

这是来源:

这是 CSS 文件:

我究竟做错了什么?

0 投票
2 回答
155 浏览

python - GtkSourceView/Buffer 崩溃:Gtk-ERROR: Byte index is off the end of the line

我一直致力于编写故事的文本编辑器。我正在使用 Python、GTK+ 3 和 GtkSourceView 3。编辑器的要点是折叠某些区域。虽然没有 - 还没有?- 在 GTK TextView / SourceView 中内置对折叠的支持,我一直在使用带有 invisible=True 的标签和 SourceView 的源标记来实现该功能。

此处提供源代码:https ://github.com/mkoskim/mawe

核心编辑器(SourceBuffer 和 SourceView)位于:https ://github.com/mkoskim/mawe/blob/master/gui/gtk/SceneView.py https://github.com/mkoskim/mawe/blob/master /gui/gtk/SceneBuffer.py

出于测试目的,您可以克隆存储库,并使用以下命令运行应用程序:

现在,应用程序不断频繁地随机崩溃,出现如下错误:

没有其他错误或警告日志。我一直在谷歌搜索错误没有任何成功。

其他症状似乎是:

  • 即使编辑器处于空闲状态,也会发生崩溃

  • 今天我发现奇怪的是,我可以通过将鼠标移到隐藏部分上来非常快地崩溃:o

我不能 100% 确定,但我认为这与不可见区域有关。

问题:有没有人碰巧知道这是否是一些已知的错误?

问题:有没有人有任何想法可以让我寻找可能的解决方案?有什么想法会导致崩溃,以及我可以更深入地探索什么?


更新:我用标签做了一些更广泛的测试。似乎没有其他属性对鼠标移动做出反应,但是当打开不可见性时,鼠标在区域上移动会使应用程序崩溃。我一直在搜索报告鼠标事件崩溃 gtktextbtree,但到目前为止没有成功。看起来这适用于几个 v3.x GTK 版本。


更新:我想我几乎找到了解决方法:从 GtkSource.View 过滤掉运动通知事件似乎有效,如下所示:

如果您在隐藏线附近按下鼠标按钮,应用程序仍然会崩溃,但似乎它不再因鼠标移动而崩溃。


更新:更多调查。虽然阻止鼠标事件可以防止崩溃,但它也会导致怪癖,例如无法使用鼠标放置光标、选择区域、DnD、... 此外,鼠标光标可能会消失,因为它不是每次都正确更新。我很确定将鼠标/窗口坐标转换为缓冲区位置的算法存在错误(当文本中有较大的隐藏块时),因此任何鼠标事件都可能使应用程序崩溃。


更新:我一直在尝试为该主题创建简单的测试用例。好事:隐藏似乎奏效了。坏事:还不能重现问题。测试脚本可以在这里找到:

https://github.com/mkoskim/mawe/blob/master/gui/gtk/test/hidecrash/hidecrash.py


更新:试图弄清楚 - 测试用例有效,编辑器不起作用。测试用例的区别至少在于编辑器将隐藏标签放入事件循环(*)中。试图为此做一个测试用例......

(*) 使用当前的 Gtk SourceView/TextView 实现折叠肯定有很多不同的解决方案。我选择了使用“标记”语言并在编辑时应用折叠的方法,因为它适用于撤消/重做。我还尝试了其他解决方案,例如:

  1. 剪切折叠场景并将小部件插入到文本缓冲区,包含文本本身。想法:“文本[选择用于折叠的部分]文本”->“文本[锚+带有剪切文本的小部件]文本”-遗憾的是,它不适用于撤消/重做。

  2. 剪切文本,给它一个 ID,然后在缓冲区中放置一个包含 ID 的特殊标记部分。想法“文本[选择用于折叠的部分]文本”->“文本[ID w/隐藏+受保护标签]文本”-不起作用,因为剪切'n'粘贴或撤消/重做不应用标签,所以用户可以销毁标记。

  3. 普通标记:尝试使用折叠指示器保持标记非常困难。您需要带有受保护标签的“[char][mark][char]”之类的东西,以确保您不会在某处丢失标记。

无论如何,我会继续调查。


更新:仍然无法在我的测试脚本中重现该问题,但发现了一些可能有趣的东西:折叠最后一个场景不会导致崩溃 - 仅在折叠跟随另一个场景(折叠或未折叠)的场景时。

0 投票
0 回答
81 浏览

pygtk - 将大文件加载到 GtkSourceView 很慢

我正在尝试使用 Python (PyGObject) 中的 GTK3 将 1k+ 行长文件加载到 GtkSourceView 中。

每当我设置文本时,完全出现需要 2-3 秒(它正在缓慢滚动并在底部添加新行)。我已经连接了一个分析器,它在 Gtk.main 中显示了 99.5% 的 cpu 时间。

基本上我用它来设置文本:

我在这里做错了吗?有没有办法加快这个速度?