我正在为没有语法文件的小众语言创建一个vim语法文件。设置简单函数时,该语言具有以下语法。
foo(parameter)
if parameter then
print("yes")
else
print("no")
end
end
我希望与if配对的结束与条件的语法着色以及与函数声明配对的“end”具有函数语法着色。我该如何实现这一目标?我目前将结束设置为关键字。这确保它是彩色的,但它匹配if的颜色,而不是函数名称。
感谢您的帮助。
答案 0 :(得分:1)
您需要定义一些语法区域,从if开始,以end结尾,另一个以函数声明开头,以end结束。您可以使用'contains'/'containedin'选项来允许嵌套区域等。这远非微不足道,但在:help syn-region
等中有许多有用的指南。彻底阅读整个帮助文件并进行实验。为了帮助您入门,您可以尝试这样的事情:
syn keyword MyLanguageElse else containedin=MyLanguageIfBlock
syn region MyLanguageIfBlock matchgroup=MyLanguageIf start="^\s*if\>" end="^\s*end\>" containedin=MyLanguageFuncBlock contains=MyLanguageIfBlock
syn region MyLanguageFuncBlock matchgroup=MyLanguageFunc start="^\s*\k*\ze(" end="^\s*end\>"
hi link MyLanguageIf Keyword
hi link MyLanguageElse Keyword
hi link MyLanguageFunc Comment
祝你好运!