Skip to content

Commit 49f4eae

Browse files
authored
Filter out enumerable from JS completion candidates
Fixes #39
1 parent 8e91da6 commit 49f4eae

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## master
44

5+
- [#39](https://github.com/clojure-emacs/clj-suitable/issues/39): Exclude enumerable from JS completion candidates.
6+
57
## 0.5.1 (2023-10-31)
68

79
- [#41](https://github.com/clojure-emacs/clj-suitable/pull/41): Expand completion for non-namespaced keywords.

src/main/suitable/js_introspection.cljs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
(for [[i {:keys [_obj props]}] (map-indexed vector (properties-by-prototype js-obj))
2929
key (js-keys props)
3030
:when (and (not (get @seen key))
31+
(not (oget (oget props key) "enumerable"))
3132
(or (empty? prefix)
3233
(starts-with? key prefix)))]
3334
(let [prop (oget props key)]

src/test/suitable/complete_for_nrepl_test.clj

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
(:require
33
[cider.piggieback :as piggieback]
44
[clojure.java.shell]
5-
[clojure.test :as t :refer [deftest is run-tests testing]]
5+
[clojure.test :as t :refer [are deftest is run-tests testing]]
66
[nrepl.core :as nrepl]
7-
[nrepl.server :refer [start-server default-handler]]
7+
[nrepl.server :refer [default-handler start-server]]
88
[suitable.complete-for-nrepl :as sut]
99
[suitable.middleware :refer [wrap-complete-standalone]]))
1010

@@ -103,7 +103,20 @@
103103
:context ":same"})
104104
candidates (:completions response)]
105105
(is (= [{:ns "js/Object", :candidate ".keys" :type "function"}] candidates)
106-
(pr-str response))))))
106+
(pr-str response))))
107+
108+
(testing "make sure that enumerable items are filtered out"
109+
(are [context candidates] (= candidates
110+
(let [response (message {:op "complete"
111+
:ns "cljs.user"
112+
:symbol ".-"
113+
:context context})]
114+
(:completions response)))
115+
"(__prefix__ (js/String \"abc\"))"
116+
[{:candidate ".-length", :ns "(js/String \"abc\")", :type "var"}]
117+
118+
"(-> (js/String \"abc\") __prefix__)"
119+
[{:candidate ".-length", :ns "(-> (js/String \"abc\"))", :type "var"}]))))
107120

108121
(deftest node-env?
109122
(is (false? (sut/node-env? nil)))

0 commit comments

Comments
 (0)
close