-
Notifications
You must be signed in to change notification settings - Fork 175
/
complete.clj
43 lines (37 loc) · 1.39 KB
/
complete.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(ns cider.nrepl.middleware.complete
(:require
[cider.nrepl.middleware.util.cljs :as cljs]
[cider.nrepl.middleware.util.error-handling :refer [with-safe-transport]]
[cljs-tooling.complete :as cljs-complete]
[compliment.core :as jvm-complete]
[compliment.utils :as jvm-complete-utils]
[orchard.misc :as u]))
(defn complete
[{:keys [ns symbol context extra-metadata] :as msg}]
(let [ns (u/as-sym ns)
prefix (str symbol)
extra-metadata (set (map keyword extra-metadata))]
(if-let [cljs-env (cljs/grab-cljs-env msg)]
(cljs-complete/completions cljs-env prefix {:context-ns ns
:extra-metadata extra-metadata})
(jvm-complete/completions prefix {:ns ns
:context context
:extra-metadata extra-metadata}))))
(defn completion-doc
[{:keys [ns symbol] :as msg}]
(when-not (cljs/grab-cljs-env msg)
(jvm-complete/documentation (str symbol) (u/as-sym ns))))
(defn complete-reply [msg]
{:completions (complete msg)})
(defn doc-reply
[msg]
{:completion-doc (completion-doc msg)})
(defn flush-caches-reply
[msg]
(jvm-complete-utils/flush-caches)
{})
(defn handle-complete [handler msg]
(with-safe-transport handler msg
"complete" complete-reply
"complete-doc" doc-reply
"complete-flush-caches" flush-caches-reply))