我正在使用vim-clojure-static,一个Clojure插件。我可以通过以下方式将我自己的函数和宏添加到语法组:
syntax keyword clojureMacro defsystem
但是在Clojure中,在从其他名称空间中需要(导入)代码之后,必须使用名称空间来限定函数和宏。例如,如果我要求名称空间my-namespace
和defsystem
位于my-namespace
,我必须通过ny-namespace/defsystem
引用它。但是,当需要另一个名称空间时,可以缩短(实际重命名)名称空间名称,例如my/defsystem
。
所以,问题是:syntax keyword clojureMacro defsystem
如果defsystem
是命名空间,则my/defsystem
不起作用,例如'\m[a-z.+\-*_!?]\+\/'
。命名空间限定符可以是任何东西。我该如何解决这个问题?正则表达式'\m[a-z.+\-*_!?]\+\/'
匹配名称空间限定符。所以我基本上希望代码匹配{{1}}紧跟一个clojureMacro,然后突出显示好像整个东西都是clojureMacro。
答案 0 :(得分:2)
它并没有真正回答你的问题,但无论如何。
在VimClojure提供所谓的“动态突出显示”的日子里。它将检查所需的命名空间(及其别名),并将动态添加引用的命名空间的符号到突出显示。因此,如果您输入“m / defsystem”,它将突出显示,但“m / non-existant”或“not-m / defsystem”则不会。突出显示确实是一个宏或功能等。你是否会将名称空间别名从“m”更改为其他内容,突出显示将(几乎)自动适应。但是它需要运行后端服务器。
也许你想对vimclojure google group上的人进行ping操作。这都是关于vim和clojure的。也许有人愿意伸出援助之手并将此功能作为壁炉扩展。
答案 1 :(得分:0)
对于那些仍在寻找解决方案的人来说,我已经重新实现了VimClojure的动态突出显示功能作为fireplace.vim插件: