1

我正在使用 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.+\-*_!?]\+\/'紧跟一个clojureMacro,就像整个事情是一个clojureMacro一样突出显示。

4

2 回答 2

2

它并没有真正回答你的问题,但无论如何。

过去 VimClojure 提供了所谓的“动态突出显示”。它将检查所需的命名空间(及其别名),并将引用的命名空间的符号动态添加到突出显示中。因此,如果您键入“m/defsystem”,它会突出显示,但“m/non-existant”或“not-m/defsystem”不会。突出显示确实尊重宏或函数等。您是否会将命名空间别名从“m”更改为其他名称,突出显示将(几乎)自动适应。但是,它需要运行后端服务器。

也许你想 ping vimclojure google group上的人。这都是关于 vim 和 clojure 的。也许有人愿意伸出援手,并将此功能作为壁炉扩展。

于 2013-07-10T05:46:22.483 回答
0

对于那些仍在寻找解决方案的人,我将 VimClojure 的动态突出显示功能重新实现为一个壁炉.vim 插件:

https://github.com/guns/vim-clojure-highlight

于 2014-01-14T20:24:57.977 回答