所以我在一段时间后发现了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/
然而,其他图书馆已经引入了自己的宏,如defroutes
和defhtml
。我希望创建一个选择def*
的通配符正则表达式。
我尝试将*添加到def并且它显然不起作用,因此正则表达式是错误的。通配符正则表达式是什么样的?
答案 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 *任何东西都被归类为'符号'