Skip to content

Commit

Permalink
Integrate the ClojureScript completions from compliment
Browse files Browse the repository at this point in the history
This patch adds the necessary setup for ClojureScript completions with
compliment and inlines the call, getting rid of the cljs-complete function
wrapper.
  • Loading branch information
arichiardi committed Jan 17, 2020
1 parent 321acc5 commit 1c5a941
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 20 deletions.
4 changes: 2 additions & 2 deletions project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
^:inline-dep [thunknyc/profile "0.5.2"]
^:inline-dep [mvxcvi/puget "1.2.0"]
^:inline-dep [fipp "0.6.22"] ; can be removed in unresolved-tree mode
^:inline-dep [compliment "0.3.9"]
^:inline-dep [compliment "0.4.0-SNAPSHOT"]
^:inline-dep [cljs-tooling "0.3.1"]
^:inline-dep [org.rksm/suitable "0.2.14" :exclusions [org.clojure/clojurescript]]
^:inline-dep [org.rksm/suitable "0.3.0" :exclusions [org.clojure/clojurescript]]
^:inline-dep [cljfmt "0.6.6" :exclusions [org.clojure/clojurescript]]
^:inline-dep [org.clojure/tools.namespace "0.3.1"]
^:inline-dep [org.clojure/tools.trace "0.7.10"]
Expand Down
31 changes: 13 additions & 18 deletions src/cider/nrepl/middleware/complete.clj
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,28 @@
(: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]
[compliment.core :as complete]
[suitable.compliment.sources.cljs :as cljs-sources]
[compliment.utils :as complete-utils]
[orchard.misc :as misc]
[suitable.complete-for-nrepl :as suitable]))

(defn- cljs-complete
[{:keys [enhanced-cljs-completion?] :as msg} cljs-env ns prefix extra-metadata]
(concat (cljs-complete/completions cljs-env prefix {:context-ns ns
:extra-metadata extra-metadata})
(when enhanced-cljs-completion? (suitable/complete-for-nrepl msg))))

(defn complete
[{:keys [ns symbol context extra-metadata] :as msg}]
(let [ns (misc/as-sym ns)
prefix (str symbol)
extra-metadata (set (map keyword extra-metadata))]
(let [prefix (str symbol)
options-map {:ns (misc/as-sym ns)
:context context
:extra-metadata (set (map keyword extra-metadata))}]
(if-let [cljs-env (cljs/grab-cljs-env msg)]
(cljs-complete msg cljs-env ns prefix extra-metadata)
(jvm-complete/completions prefix {:ns ns
:context context
:extra-metadata extra-metadata}))))
(binding [cljs-sources/*compiler-env* cljs-env]
(concat (complete/completions prefix (merge options-map {:sources 'TODO}))
(suitable/complete-for-nrepl msg)))
(complete/completions prefix (merge options-map {:sources 'TODO})))))

(defn completion-doc
[{:keys [ns symbol] :as msg}]
(when-not (cljs/grab-cljs-env msg)
(jvm-complete/documentation (str symbol) (misc/as-sym ns))))
(complete/documentation (str symbol) (misc/as-sym ns) {:sources 'TODO})))

(defn complete-reply [msg]
{:completions (complete msg)})
Expand All @@ -39,7 +34,7 @@

(defn flush-caches-reply
[msg]
(jvm-complete-utils/flush-caches)
(complete-utils/flush-caches)
{})

(defn handle-complete [handler msg]
Expand Down

0 comments on commit 1c5a941

Please sign in to comment.