2017-07-05 47 views
0

我想創建我自己的語言定義,並用它來突出顯示我的應用程序中的語法。如何在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.rnglanguage2.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」,我通過調試來檢查。

回答

1

當您添加自己的搜索路徑時,您必須保留Gtk.SourceLanguageManager的原始搜索路徑。附加到它而不是替換它。