Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 语法突出显示规则,用于突出显示Lisp函数调用中的函数引用_Regex_Vim_Clojure_Lisp_Syntax Highlighting - Fatal编程技术网

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

Regex 语法突出显示规则,用于突出显示Lisp函数调用中的函数引用,regex,vim,clojure,lisp,syntax-highlighting,Regex,Vim,Clojure,Lisp,Syntax Highlighting,我正在为Clojure编写Vim中的语法突出显示规则,或者另一个Lisp,其中(fn…主要用于函数调用。我一直在强调函数调用的第一个单词,即函数引用。下面是我所在位置的演示: 如您所见,函数调用中的第一个单词(str(str a b c d))高亮显示。但是,文字列表中的第一个元素('(13)中的1)也会高亮显示,这是无意的。要强调的是,两个文本列表都突出显示了它们的第一个元素,这是错误的 下面是执行此突出显示的语法规则: syn match lispFunc "'\{0}\((\)\@<

我正在为Clojure编写Vim中的语法突出显示规则,或者另一个Lisp,其中
(fn…
主要用于函数调用。我一直在强调函数调用的第一个单词,即函数引用。下面是我所在位置的演示:

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

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

syn match lispFunc "'\{0}\((\)\@<=\<.\{-1,}\>?\{0,1}"
synmatchlispfunc“'\{0}\(\)\@您可以使用

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

这里,
\(\('\)\@是一个与
)匹配的正向查找(
,前提是它前面没有
。这个条件在正向查找中设置了一个
('\)\@负向查找。

这可能是注定的:什么是
(解构绑定(ab)c…
要做什么?或者
(let(ab c)…)
@tfb非常感谢您的输入,但我将重点放在为函数调用保留
()
的Lisp上。从这个意义上讲,Clojure表现得非常好,但我更喜欢这将产生的噪音,而不是基于字典的函数高亮显示噪音。请尝试
syn match lispFunc“\(\('\)\{0,1}“
>我关注的是为函数调用保留()的Lisp,即不是经典的MacCarthy Lisp、ANSI Lisp,也不是MacLisp或InterLisp之类的任何它的祖先,也不是Scheme,也不是Emacs Lisp、EuLisp、ISLisp。。。