Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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
Clojure Vim语法:匹配命名空间限定符号_Clojure_Syntax Highlighting_Vim_Vim Syntax Highlighting - Fatal编程技术网

Clojure Vim语法:匹配命名空间限定符号

Clojure Vim语法:匹配命名空间限定符号,clojure,syntax-highlighting,vim,vim-syntax-highlighting,Clojure,Syntax Highlighting,Vim,Vim Syntax Highlighting,我正在使用vim clojure static,一个clojure插件。我可以将自己的函数和宏添加到语法组,例如: 语法关键字clojureMacro defsystem 但是在Clojure中,在需要(导入)来自其他名称空间的代码之后,必须对函数和宏进行名称空间限定。例如,如果我需要名称空间my namespace并且defsystem在my namespace中,我必须通过ny namespace/defsystem引用它。但是,由于需要另一个名称空间,可以将名称空间名称缩短(实际重命名),

我正在使用vim clojure static,一个clojure插件。我可以将自己的函数和宏添加到语法组,例如:
语法关键字clojureMacro defsystem

但是在Clojure中,在需要(导入)来自其他名称空间的代码之后,必须对函数和宏进行名称空间限定。例如,如果我需要名称空间
my namespace
并且
defsystem
my namespace
中,我必须通过
ny namespace/defsystem
引用它。但是,由于需要另一个名称空间,可以将名称空间名称缩短(实际重命名),例如,
my/defsystem


因此,问题在于:如果
defsystem
名称空间被限定,则
语法关键字clojureMacro-defsystem
不起作用,如
my/defsystem
。名称空间限定符可以是任何内容。我怎样才能解决这个问题?正则表达式
'\m[a-z.+\-*.\u!?]\+\/'
与命名空间限定符匹配。因此,基本上我希望代码匹配
'\m[a-z.+\-*.\u!?]\+\/'
后紧跟着一个clojureMacro,就像整个事情是一个clojureMacro一样突出显示。

它并不能真正回答您的问题,但无论如何

早在VimClojure提供所谓的“动态突出显示”的时候,它将检查所需的名称空间(及其别名),并将被引用名称空间的符号动态添加到突出显示中。因此,如果您键入“m/defsystem”,它将突出显示,但“m/nonexistant”或“not-m/defsystem”不会。突出显示并不涉及宏或函数等。如果您将名称空间别名从“m”更改为其他名称,突出显示将(几乎)自动适应。然而,它需要一个后端服务器运行


也许你想打电话给警察。都是关于维姆和克洛尤尔的。可能有人愿意伸出援手,将此功能作为壁炉扩展。

对于仍在寻找解决方案的任何人,我已将VimClojure的动态突出显示功能重新实现为壁炉。vim插件:


嗨,科塔拉克!我想你在Vim方面很在行。那么,我所要求的是不可能的吗?另外,我在尝试这一点时遇到的另一个问题是:例如,
语法匹配clojureMacro'\m\([a-z.+\-*\\?]\+\/\)\?defsystem'
是否有办法将正则表达式放入变量或其他可以计算的对象中,并将其作为参数给出?类似于
让nsq='\m\([a-z.+\-*\.?]\+\/\\)\?'
然后执行
语法匹配clojureMacro eval(nsq.'defsystem')
它不起作用;但这可以通过某种方式实现吗?它可能可以通过
execute“syntax match clojureMacro”这样的方法实现。nsq。“除雾系统”
。但未经测试。