Skip to content

Commit 588fd48

Browse files
committed
Improve fn classification of vars
In particular, multimethod fns are now properly classified
1 parent 90bd7b9 commit 588fd48

2 files changed

Lines changed: 16 additions & 10 deletions

File tree

clj/src/vim_clojure_static/generate.clj

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@
3939
(.setAccessible field true)
4040
(.get field field)))
4141

42+
(defn fn-var? [v]
43+
(let [f @v]
44+
(or (contains? (meta v) :arglists)
45+
(fn? f)
46+
(instance? clojure.lang.MultiFn f))))
47+
4248
;;
4349
;; Definitions
4450
;;
@@ -78,8 +84,8 @@
7884
(conj builtins
7985
;; Clojure devs are fastidious about accurate metadata
8086
["Define" (select! #(re-seq #"\Adef(?!ault)" (str %)))]
81-
["Macro" (select! #(:macro (meta (resolve %))))]
82-
["Func" (select! #(:arglists (meta (resolve %))))]
87+
["Macro" (select! #(:macro (meta (ns-resolve 'clojure.core %))))]
88+
["Func" (select! #(fn-var? (ns-resolve 'clojure.core %)))]
8389
["Variable" (select! identity)])))
8490

8591
(def character-properties
@@ -238,17 +244,17 @@
238244
vim-syntax-keywords
239245
\newline
240246
generation-comment
241-
clojure-version-comment
242-
vim-completion-words
243-
\newline
244-
generation-comment
245247
java-version-comment
246248
vim-posix-char-classes
247249
vim-java-char-classes
248250
vim-unicode-binary-char-classes
249251
vim-unicode-category-char-classes
250252
vim-unicode-script-char-classes
251-
vim-unicode-block-char-classes))
253+
vim-unicode-block-char-classes
254+
\newline
255+
generation-comment
256+
clojure-version-comment
257+
vim-completion-words))
252258
;; Generate an example file with all possible character property literals.
253259
(spit "tmp/all-char-props.clj"
254260
comprehensive-clojure-character-property-regexps)

0 commit comments

Comments
 (0)