我想創建我自己的語言定義,並用它來突出顯示我的應用程序中的語法。如何在Gtk SourceView中使用自定義語言高亮語法?
我的問題是,試圖從我的應用程序的數據文件夾(/usr/share/myapp/
)訪問語言定義,即使使用c.lang
文件從/usr/share/gtksourceview-3.0/language-specs/
複製,只是爲了測試的時候,我在運行時出現此錯誤:
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」文件只能在原始目錄中使用嗎?如果是這樣,我該如何改變這種情況?我已經研究過這些文件,但沒能找到自己的原始文件夾的任何參考...
這是與此問題相關的源代碼(在瓦拉):
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」,我通過調試來檢查。