我正在尝试为 Gedit 创建一种新的语言定义。该语言称为 nesC,它基本上是从 C 派生而来的,因此共享 C 结构。
我按照 Gnome wiki 上的说明来了解如何创建新语言。
我复制了 c.lang 文件并将其粘贴到~/.local/share/gtksourceview-3.0/language-specs
,然后对该文件进行了所有必要的更改,以将 C 转换为 nesC。
问题是,当我打开扩展名为 的文件时.nc
,它仍然是纯黑色。但是,如果我转到“查看”→“突出显示模式”→“源”,nesC 选项就在那里并且已被选中,这意味着 Gedit 正在检测文件类型。在这种情况下,为什么没有颜色?当我从源中选择 C 时,我得到了颜色。
我还创建了一个 mime 类型文件,如 Gnome wiki 文章中有关如何创建新语言所示。
在文件中,我将其更改id=c
为id=nesc
。如果我将其改回id=c
,那么它就可以正常工作。为什么我不应该使用nesc
?教程显然更改了值(id=foo
)。
答案1
你应该改变id
在主标签<language>
和标签<context>
(的子标签<definitions>
)中有 2 个位置的属性:
…
<language id="nesc" _name="nesC" version="2.0" _section="Source">
<metadata>
<property name="mimetypes">text/x-nesc</property>
<property name="globs">*.nesc;*.nc</property>
</metadata>
…
和
…
<definitions>
<context id="nesc">
…
</context>
</definitions>
</language>`
(但我不知道你是如何命名 mime-type 的。)