Names with ' in them are not colored correctly
Not sure if this is a vim-clojure-static or vim-clojure-highlight issue.
Names that contain ' become clojureSymbol instead of clojureFunc when using vim-clojure-highlight.
Also, another problem with ' is the following:
(defn some-func [args] body)
(defn some-other-func [args]
(let [some-func' (fn ...)]
...))
In this case, the some-func part of the name some-func' becomes clojureFunc while the ' becomes clojureQuote, resulting in a name with two colors in it, which can be confusing. Normally, the name in the let should be a clojureSymbol, but it seems that because some-func is also a function this happens somehow.
Hi oskarv!
In this case, the some-func part of the name some-func' becomes clojureFunc while the ' becomes clojureQuote, resulting in a name with two colors in it, which can be confusing. Normally, the name in the let should be a clojureSymbol, but it seems that because some-func is also a function this happens somehow.
Yes, this is a problem with the way vim-clojure-static handles single quotes. We use syntax keyword statements to match known symbols, but since we cannot include ' in the iskeywords setting¹, symbols with single quotes are broken in this way.
Now we could avoid this problem by using syntax match instead of syntax keyword, but there is a significant performance hit because while matching syntax keyword is a simple table lookup, matching a syntax match requires a full regexp match.
My benchmarks showed that the performance hit was ~8-10x when translating to simple regexps, while the hit was about ~2x when using frak optimized regexps.
2x is pretty good, but IMO, the Clojure syntax is already a little slow, so I decided against the switch.
Names that contain ' become clojureSymbol instead of clojureFunc when using vim-clojure-highlight.
Now this is a bug! I'll have a look at it today. Thanks!
¹ That would break quoting and the #' reader macro