2010-10-30 19 views
1

我正在为没有语法文件的小众语言创建vim语法文件。设置简单函数时,该语言具有以下语法。如何在Vim中为同一个关键字获取上下文相关语法着色?

foo(parameter) 
    if parameter then 
     print("yes") 
    else 
     print("no") 
    end 
end 

我想与该配对,如果要对条件语句的语法着色和“结束”与函数声明有函数语法着色配对结束。我如何实现这一目标?我目前已将结尾设为关键字。这确保了它是有颜色的,但它匹配if的颜色,而不是函数名称。

感谢您的任何帮助。

回答

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 

祝你好运!

相关问题