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

linux - 如何在 GtkSourceView 中为 gEdit 定义没有结束符号的块?

我的源语法是块的组合以 # 以下块名称开头,并在定义另一个块时结束:

目标是将 php 代码突出显示为 php,将 JavaScript 突出显示为 JS 等。

0 投票
2 回答
440 浏览

c - Gedit 语法高亮与 gtksourceview 用于反向引用子模式?

以下将在第二行突出显示“超时”,但不会再次突出显示它。gtksourceview 是否支持“子模式”上的某种反向引用,以匹配整个文件中的所有实例?

gtksourceview 网站手册

/usr/share/gtksourceview-2.0/language-specs/c.lang

0 投票
1 回答
258 浏览

c - gtk_source_undo_manager_begin_not_undoable_action / gtk_source_undo_manager_end_not_undoable_action 不工作

我正在尝试使用 gtk+-2.0 和 gtksourceview-2.0 在 C 中编写我自己的文本编辑器。当我被卡住时,我一直在使用 gedit 源,但他们显然没有使用这个功能,而且我在网上找不到它的使用示例。当我打开一个文本文件并将其内容放入文本缓冲区时,这被注册为可撤消的操作。我希望这个过程不可撤销,所以我放置了:

gtk_source_undo_manager_begin_not_undoable_action(um);

在我的 open_activated 函数开始时(如下提供),并且:

gtk_source_undo_manager_end_not_undoable_action(um);

在同一功能的末尾。根据 devHelp 中提供的帮助,它说这两行之间的所有内容都不应撤消,但确实如此。我错过了什么?有没有更好的方法来完成同样的功能?


不幸的是,没有像语言管理器那样的 gtk_source_undo_manager_new () 或 gtk_source_undo_manager_get_default ()。GtkSourceUndoManager 的文档是:

描述

可以实现 GtkSourceUndoManager 接口来为 GtkSourceBuffer 提供自定义撤消管理。使用 gtk_source_buffer_set_undo_manager 为特定源缓冲区安装自定义撤消管理器。

分别在撤销堆栈的撤销状态或重做状态发生变化时使用 gtk_source_undo_manager_can_undo_changed 和 gtk_source_undo_manager_can_redo_changed。

细节

GtkSourceUndoManager

GtkSourceUndoManagerIface

0 投票
1 回答
253 浏览

c - gtk+/gtksourceview 如何插入行注释或块注释

我正在使用 gtk+-2.0 gtksourceview-2.0 在 C 中创建一个文本编辑器。我无法找到有关如何评论一行或一个块的任何信息。我找到了大量关于如何突出显示这些注释行的信息,但没有关于实际创建这些注释的信息。我搜索了 google、devhelp 以及遇到困难时使用的 gedit 和 anjuta 资源。没有喜悦。

我是否需要从头开始编写此功能,或者 gtksourceview 中是否有任何预先存在的功能可以启用此功能?我不介意从头开始编写它,它看起来就是这样的基本功能,我不想浪费时间重新发明轮子。谢谢。

0 投票
1 回答
2480 浏览

python - 在 PyGObject 中使用 GtkSourceView 从 Glade 加载 GUI

我正在尝试使用在 PyGObject 中具有 GtkSourceView 小部件的 Glade 文件。我写了一个关于如何开始在 Glade 中使用新的 GtkSourceView 3.0 的小指南:http: //cjenkins.wordpress.com/2012/05/08/use-gtksourceview-widget-in-glade/

问题是当我想从 PyGObject 加载 Glade 时:

当我运行该文件时,出现此错误:

Glade 文件 (test.glade) 只是一个带有 GtkSourceView 小部件的窗口:

我现在不知道如何解决这个问题。我想我需要在调用 add_from_file() 之前注册某种类型,不是吗?欢迎任何想法。

我正在使用:

  • Ubuntu 精确 12.04
  • 林间空地 3.12.0
  • libgtksourceview 3.0
  • gtk+ 3.0

亲切的问候

0 投票
2 回答
289 浏览

c - 如何保存 gtk 笔记本选项卡以在以后的会话中使用

我正在使用 gtk+-2.0 gtksourceview-2.0 创建一个文本编辑器。我希望能够在关闭编辑器并在以后重新打开它之后保存笔记本中的选项卡以供使用。我在 gtk_notebook_* 下的 devhelp 中没有看到任何看起来很有希望的东西。我可以将这些文件的路径保存在数据库表中,然后从数据库中读取表并在应用程序启动时创建选项卡,但这似乎有点笨拙。许多编辑器都内置了此功能。对于一个 geany,但我知道还有其他的。

这在gtk中可能吗?我对 C 比较陌生,有没有其他方法可以存储这些路径(除了在数据库中)?谢谢。

0 投票
1 回答
1222 浏览

c - 如何(以编程方式)滚动到 gtktextview/gtksourceview 中的特定行

我正在创建一个文本编辑器作为更熟悉 C 和 gtk+ 的一种方式。我正在使用 gtk+-2.0 & gtksourceview-2.0 和 gtk_scrolled_window 。作为创建 goto 函数浏览器的第一次尝试,我想我只需创建在文档中找到的函数数组以及它们出现的相应行数组。我做了那么多。我惊讶地发现在 devhelp 中没有可以轻松找到的 goto line 功能。听起来 gtk_text_view_scroll_to_mark () 是我想要的(在创建标记之后),但是所有 *scroll_to 函数都需要一个 inside_margin,老实说我不太明白。:

来自开发帮助:

用于此功能的有效屏幕减少了一个大小为 within_margin 的边距。

这意味着什么?

我什至接近吗?如何创建此滚动到行号功能?

谢谢。

更新:以下三个函数用于滚动到缓冲区中的一行:

gtk_text_view_scroll_to_mark 的最后一个参数用于获取目标行号以与缓冲区中的最顶部行对齐。我想这个参数不适用于所有屏幕尺寸,但我还没有测试过。

gtk_text_view_scroll_mark_onscreen 函数让我接近了行号,但它只是文本区域底部的几行。

0 投票
2 回答
849 浏览

c - 如何从 gtktextview/gtksourceview 解析 C 中的文本

0 投票
1 回答
1348 浏览

c - 如何以编程方式在 gtk 文本缓冲区中选择文本(主要选择)

我正在使用 gtk+-2.0 & gtksourceview-2.0 编写文本编辑器。我无法找到一种以编程方式选择文本块并将其添加到操作系统(linux)主选择剪贴板的方法。就像我用鼠标突出显示一个文本块或按住 shift 键并用箭头键选择文本一样。

我在“gtk_text_buffer_get_selection_bound()”下的 devhelp 中找到了语句:

缓冲区中当前选定的文本是“selection_bound”和“insert”标记之间的区域。

编辑: gtk_text_buffer_select_range(),设置这两个标记的位置。

以下代码块(使用文本迭代器开始和结束指定的区域)复制到主选择剪贴板(根据需要):

谢谢你的想法!!!

0 投票
2 回答
382 浏览

c - gtk+ 文本编辑器 vim 类型模式(插入/命令)

我正在尝试将类似 vim 的功能合并到我在 gtk+ 2.0 和 gtksourceview 2.0 中创建的文本编辑器中。我让它工作,除了当我按“i”进入插入模式时,它会正确进入这个模式,但是它会在文本缓冲区中输入一个“i”。这是我的按键功能,它设置为在按下 esc 键时进入命令模式(离开插入模式),正如我之前所说,当按下 i 键时进入插入模式:

如您所见gtk_text_view_set_editable (text_view, FALSE),进入命令模式时 gtk_text_view_set_editable (text_view, TRUE)设置,进入插入模式时设置。但是,当进入插入模式时, text_view 在按键注册到缓冲区之前被设置为可编辑,即使它是按键情况下的最后一个命令。进入插入模式时,如何防止 i 被放置在文本缓冲区中?