wal*_*ous 5 gedit syntax-highlighting julia-lang
我试图创建一个新.lang
文件来让 Gedit 识别Julia 编程语言。我已阅读教程、参考文档和维基页面Gedit/NewLanguage,我相信该文件是正确的。但是,在将新julia.lang
文件复制到 后重新启动 gedit 时/usr/share/gtksourceview-3.0/language-specs/
,确实可以识别 .jl 文件,并且语法突出显示菜单设置为 julia,但没有实际突出显示。
考虑到我可能做错了什么,我尝试使用现有的语言文件,用于类似的语言(Matlab),并且只将标头元数据更改为:
<language id="julia" _name="Julia" version="2.0" _section="Scientific">
<metadata>
<property name="mimetypes">text/x-julia;application/x-julia</property>
<property name="globs">*.jl</property>
<property name="line-comment-start">#</property>
</metadata>
Run Code Online (Sandbox Code Playgroud)
其他所有内容都保持原样,我将文件另存为julia.lang
. 尽管如此,当重新打开 gedit 时也会出现同样的问题。更重要的是,如果我选择从语法Matlab的入口突出菜单,格式是否正确做出(根据Matlab的规则),即使两者matlab.lang
并julia.lang
具有完全相同的语法定义!
我可能做错了什么?这个人似乎有同样的问题,但在那条线索中从未透露过他是如何解决的(如果他曾经这样做过的话)。有任何想法吗?
更新:我的错误确实没有改变@carandraug 在他的回答中指出的上下文 id。但是,我确实有其他问题,我会在此处注明,以防它们对任何人有所帮助:
def.lang
Julia 的单行注释中重用了“shell-like-comment”定义,但这给我带来了很多错误。事实证明,当使用引用上下文时,id
无法设置该属性。更改<context id="comment" ref="def:shell-like-comment" />
为<context ref="def:shell-like-comment" />
使错误消失。我认为参考文档(以及教程)应该提到这个警告。我已经编辑了维基页面来指出这一点。<style id="string">
是在 中定义的def.lang
)。欢迎在评论中对此进行任何澄清:-)给任何为 gedit 开发新语言高亮定义的人的最后建议:不要忘记从命令行运行 gedit 并查看控制台输出!
我不知道为什么你的原始julia.lang
文件不起作用,因为你没有显示源代码,但是你基于的文件matlab.lang
将不起作用,因为里面没有与你提到的<definitions>
相同的上下文。id
<language>
基本上,您说id
这种语言的 是julia
,但是没有id
定义它的上下文。因此找到<context id="matlab"
(当前 HEAD 的第 149 行),并将其更改为julia
.
lang 文件通常被组织为一堆单独的上下文,用于突出显示的语言功能,然后最终将其分组到与id
语言相同的主块中,并引用其他上下文。