clojure和ctags,捕捉def *形式

时间:2015-06-19 15:57:25

标签: clojure ctags exuberant-ctags

所以我在一段时间后发现了Gist的以下片段:

--langdef=Clojure                                                                         
--langmap=Clojure:.clj                                                                    
--langmap=Clojure:+.cljx                                                                  
--langmap=Clojure:+.cljs                                                                  
--regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/          
--regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/               
--regex-clojure=/\([ \t]*defn-?[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/              
--regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/               
--regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/             
--regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definitio
--regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance
--regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/    
--regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/             
--regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/                
--regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/   

然而,其他图书馆已经引入了自己的宏,如defroutesdefhtml。我希望创建一个选择def*的通配符正则表达式。

我尝试将*添加到def并且它显然不起作用,因此正则表达式是错误的。通配符正则表达式是什么样的?

2 个答案:

答案 0 :(得分:1)

loadDex会匹配def*之类的内容。在正则表达式中,明星并不意味着匹配任何内容。这意味着与任何次数的先前模式匹配。在您的情况下,先前的模式是defffffff。尝试f匹配def[a-z]*,后跟任何小写字母组合。

答案 1 :(得分:0)

感谢@ broma0的帮助,我的.ctags现在有以下内容:

--langdef=Clojure                                                               
--langmap=Clojure:.clj                                                          
--langmap=Clojure:+.cljx                                                        
--langmap=Clojure:+.cljs                                                        
--regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/
--regex-clojure=/\([ \t]*def[a-z]*[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,symbol/   
--regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/      
--regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/       

def *任何东西都被归类为'符号'