VIM语法:条件函数着色

时间:2014-01-02 20:16:53

标签: c function vim syntax

我正在自定义标准的“c.vim”语法文件,以便调整我的C代码的可视化。 我想区分“被调用函数”的颜色与“声明函数”之一。

例:

int declared_function()
{
    int m;

    m = called_function();
    return (m)
}

我深入阅读了VIM文档以及数百万个论坛和Google搜索结果,但我尝试过的所有解决方案都无效。

要恢复,我这样做了:

我以递归方式定义了一个区域,以便考虑大括号内的所有代码:

syn region Body start="{" end="}" contains=Body

然后我通过VIM模式定义了一般函数语法:

syn match cFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine

我之所以这样做,是因为我认为我可以在.vimrc文件中的“if else”条件中将两者结合起来......但经过一整天的测试失败后,我需要某人的帮助,他可以告诉我它是否是可能以及怎么做。

谢谢大家。

1 个答案:

答案 0 :(得分:1)

你非常接近。首先,您不需要递归定义,但包含其中的所有其他顶级C语法元素,以及您为被调用函数定义的特殊组:

:syn region Body start="{" end="}" contains=TOP,cFunctionUse

实际上,从中开始,默认$VIMRUNTIME/syntax/c.vim已经定义了cBlock语法组。

然后,定义cBlock组中包含的不同的语法组。

:syn match cFunctionUse "\<\h\w*\>\(\s\|\n\)*("me=e-1 contained containedin=cBlock contains=cType,cDelimiter,cDefine

最后,为它链接或定义一个不同的高亮组,以便它实际上看起来不同:

:hi link cFunctionUse Special

您可以将它们放入~/.vim/after/syntax/c.vim,这样它们就会自动添加到默认的C语法中。

相关问题