我正在使用vim-clojure-static,一个Clojure插件。我可以做,例如添加自己的函数和宏的语法组: syntax keyword clojureMacro defsystem
Vim语法:匹配命名空间限定符号
但在Clojure中,一个已经需要从其他的命名空间(进口)代码之后,人们必须命名空间限定函数和宏。例如,如果我需要名称空间my-namespace
和defsystem
位于my-namespace
,那么我将不得不通过ny-namespace/defsystem
来引用它。但是,如果需要另一个名称空间,可以缩短(实际重命名)名称空间名称,例如my/defsystem
。
所以,问题:syntax keyword clojureMacro defsystem
不起作用,如果defsystem
是命名空间qulified,如my/defsystem
。命名空间限定符可以是任何东西。我该如何解决这个问题?正则表达式'\m[a-z.+\-*_!?]\+\/'
与命名空间限定符匹配。所以基本上我想要的代码与'\m[a-z.+\-*_!?]\+\/'
匹配,紧接着是clojureMacro,突出显示整个事物是clojureMacro。
嗨kotarak!我假设你对Vim的东西非常好。那么我所问的是不可能的?另外,我在尝试这个时遇到了另一个问题:例如'syntax match clojureMacro'\ m \([az。+ \ - * _ !?] \ + \/\)defsystem''有没有将正则表达式放在一个变量或其他可以评估的东西中,并将其作为参数赋值?像'let nsq ='\ m \([az。+ \ - * _ !?] \ + \/\)\?''然后做'语法匹配clojureMacro eval(nsq。'defsystem')'不行;但可以以某种方式完成? – oskarkv
它可能可以用类似'execute“语法匹配clojureMacro这样的东西来完成。 nsq。 “defsystem”'。然而,未经测试。 – kotarak
啊,是的,执行。谢谢! – oskarkv