用于突出显示 Lisp 函数调用中的函数引用的语法高亮规则

Syntax highlighting rule to highlight the function reference in a Lisp function call

我正在为 Clojure 或另一个 Lisp 在 Vim 中编写语法高亮规则,其中 (fn ...) 主要用于函数调用。我坚持突出显示函数调用的第一个单词,即函数引用。以下是我所在位置的演示:

如您所见,函数调用中的第一个单词((str a b c d) 中的str)被突出显示。但是,文字列表中的第一个元素('(1 2 3) 中的 1)也被突出显示,这是无意的。需要强调的是,两个文字列表都突出显示了它们的第一个元素,这是错误的。

下面是执行此突出显示的语法规则:

syn match lispFunc "'\{0}\((\)\@<=\<.\{-1,}\>?\{0,1}"

以下是我对这条规则的理解:

我已经尝试了很多,但我似乎无法让前两个子规则一起工作。

您可以使用

syn match lispFunc "\(\('\)\@<!(\)\@<=\<.\{-1,}\>?\{0,1}"

这里,\(\('\)\@<!(\)\@<= 是一个正向后视,只有在它前面没有 ' 时才匹配 (。此条件设置为 \('\)\@<! negative lookbehind inside of positive lookbehind.