如何在Gedit中为语法高亮添加新的语言定义?
我试图创建一个新的.lang
文件,让.lang
识别出Julia编程语言 。 我已经阅读了教程 , 参考文档和维基页面Gedit / NewLanguage ,我相信文件是正确的。 但是,在将新的julia.lang
文件复制到/usr/share/gtksourceview-3.0/language-specs/
之后重新启动gedit时, 确实识别了.jl文件,并且语法突出显示菜单设置为julia,但没有实际突出显示。
考虑到我可能做错了什么,我尝试使用现有的语言文件,用于类似的语言( Matlab ),并且只将标头元数据更改为:
text/x-julia;application/x-julia *.jl #
其他所有内容都保持原样,我将文件保存为julia.lang
。 不过,当重新打开gedit时会出现同样的问题。 更重要的是,如果我从语法高亮菜单中选择Matlab条目,则格式化正确(根据Matlab规则),即使matlab.lang
和julia.lang
都具有完全相同的语法定义!
我能做错什么? 这家伙似乎有同样的问题,但是在那个post中从未透露过他是如何解决的(如果他曾经这样做的话)。 有任何想法吗?
更新 :我的错误确实没有改变@carandraug在他的回答中指出的上下文ID。 但是,我确实有其他问题,如果他们对任何人有帮助,我会在这里注明:
- 我重复使用
def.lang
的“shell-like-comment”定义来def.lang
Julia的单行注释,但这给我带来了很多错误。 事实certificate,当使用引用上下文时,不能设置id
属性。 从更改为
使错误消失。 我认为参考文档(以及教程)应该提到这个警告。 我编辑了维基页面以指出这一点。
- 在我用注释上下文解决问题之前,我注释掉了它的定义,但后来我开始得到一个“样式’def:string’未定义”错误。 当我取消注释定义时,此错误消失了。 我不确定是什么原因引起的(考虑到确实在
def.lang
中定义了)。 有关这方面的任何澄清都欢迎评论:-)
对开发新语言的任何人的最终建议都要强调gedit的定义:不要忘记从命令行运行gedit并查看控制台输出!
我不知道为什么你原来的julia.lang
文件没有工作,因为你没有显示源代码,但是你基于matlab.lang
将无法工作,因为
没有你提到的相同id
上下文
。
基本上,你说这种语言的id
是julia
,但是没有定义id
上下文。 因此,找到julia
。
lang文件通常被组织为一组单独的上下文,用于突出显示的语言特征,然后将其最终分组为具有与语言相同id
的主块,并引用其他上下文。