如何在 Gtk SourceView 中使用自定义语言高亮语法?
How to use custom language highlight syntax in Gtk SourceView?
我正在尝试创建自己的语言定义,并用它来突出显示我的应用程序中的语法。
我遇到的问题是,当尝试从我的应用程序的数据文件夹 (/usr/share/myapp/
) 访问语言定义时,即使使用从 /usr/share/gtksourceview-3.0/language-specs/
复制的 c.lang
文件,也只是为了测试,我在 运行 时间收到此错误:
GtkSourceView-WARNING **: Failed to load '/usr/share/myapp/c.lang': could not find the RelaxNG schema file
所以它要求一些架构文件?所以我继续并从 language-specs
文件夹中复制了每个不是 lang
文件的文件,其中包括:language.dtd
、language.rng
和 language2.rng
。
现在,当我再次 运行 时,我得到了这些错误:
GtkSourceView-WARNING **: in file /usr/share/com.github.aleksandar-stefanovic.urmsimulator/c.lang: style 'def:comment' not defined
GtkSourceView-WARNING **: Failed to load '/usr/share/com.github.aleksandar-stefanovic.urmsimulator/c.lang': unable to resolve language 'def'
这到底是什么意思?那是与名称空间相关的东西吗?这是非常奇特的,因为完全相同的文件在 gtksourceview
文件夹中时工作完美。
有线索吗?这些 "RelaxNG" 文件是否只能在其原始目录中工作?如果是这样,我该如何改变呢?我查看了这些文件,但未能找到对其原始文件夹的任何引用...
这是与问题相关的源代码(在 Vala 中):
var manager = Gtk.SourceLanguageManager.get_default ();
string search_paths[] = {"/usr/share/myapp", null};
manager.set_search_path (search_paths);
var buffer = new Gtk.SourceBuffer.with_language (manager.get_language ("c"));
应用程序确实找到了语言 "c",我已经通过调试进行了检查。
添加自己的搜索路径时,必须保留 Gtk.SourceLanguageManager
的原始搜索路径。追加而不是替换它。
我正在尝试创建自己的语言定义,并用它来突出显示我的应用程序中的语法。
我遇到的问题是,当尝试从我的应用程序的数据文件夹 (/usr/share/myapp/
) 访问语言定义时,即使使用从 /usr/share/gtksourceview-3.0/language-specs/
复制的 c.lang
文件,也只是为了测试,我在 运行 时间收到此错误:
GtkSourceView-WARNING **: Failed to load '/usr/share/myapp/c.lang': could not find the RelaxNG schema file
所以它要求一些架构文件?所以我继续并从 language-specs
文件夹中复制了每个不是 lang
文件的文件,其中包括:language.dtd
、language.rng
和 language2.rng
。
现在,当我再次 运行 时,我得到了这些错误:
GtkSourceView-WARNING **: in file /usr/share/com.github.aleksandar-stefanovic.urmsimulator/c.lang: style 'def:comment' not defined
GtkSourceView-WARNING **: Failed to load '/usr/share/com.github.aleksandar-stefanovic.urmsimulator/c.lang': unable to resolve language 'def'
这到底是什么意思?那是与名称空间相关的东西吗?这是非常奇特的,因为完全相同的文件在 gtksourceview
文件夹中时工作完美。
有线索吗?这些 "RelaxNG" 文件是否只能在其原始目录中工作?如果是这样,我该如何改变呢?我查看了这些文件,但未能找到对其原始文件夹的任何引用...
这是与问题相关的源代码(在 Vala 中):
var manager = Gtk.SourceLanguageManager.get_default ();
string search_paths[] = {"/usr/share/myapp", null};
manager.set_search_path (search_paths);
var buffer = new Gtk.SourceBuffer.with_language (manager.get_language ("c"));
应用程序确实找到了语言 "c",我已经通过调试进行了检查。
添加自己的搜索路径时,必须保留 Gtk.SourceLanguageManager
的原始搜索路径。追加而不是替换它。