Skip to content

Commit 7e5001b

Browse files
committed
Got goto def working for all langs and symbols
1 parent af47f61 commit 7e5001b

File tree

4 files changed

+13
-10
lines changed

4 files changed

+13
-10
lines changed

example-clojure/both.cljc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns hybrid.stuff
2-
(:require [#?(:clj clojure.test, :cljs cljs.test) :as t]))
2+
(:require [clojure.test :as t]))
33

44
(defn run []
55
#?(:clj (prn "This is Clojure!")

example-clojure/js.cljs

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
(prn "This is ClojureScript!"))
66

77
(comment
8-
(run))
8+
(run)
9+
(nope))
910

1011
(set/difference #{1 2 3 4} #{3 4 5 6})

src/clojure.rs

+9-7
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ pub fn bootstrap() -> String {
4040
pub fn definition(name: &str) -> String {
4141
format!(
4242
"
43-
(when-let [loc (if-let [sym (resolve '{})]
44-
(mapv (meta sym) [:file :line :column])
45-
(when-let [syms #?(:cljs (ns-interns '{})
46-
:clj (some-> (find-ns '{}) ns-interns))]
47-
[(:file (meta (-> syms first second))) 1 1]))]
43+
(if-let [loc (if-let [sym (and (not (find-ns '{})) (resolve '{}))]
44+
(mapv (meta sym) [:file :line :column])
45+
(when-let [syms #?(:cljs (ns-interns '{})
46+
:clj (some-> (find-ns '{}) ns-interns))]
47+
(when-let [file (:file (meta (-> syms first second)))]
48+
[file 1 1])))]
4849
(-> loc
4950
(update
5051
0
@@ -53,9 +54,10 @@ pub fn definition(name: &str) -> String {
5354
(str)
5455
(clojure.string/replace #\"^jar:file\" \"zipfile\")
5556
(clojure.string/replace #\"\\.jar!/\" \".jar::\"))))
56-
(update 2 dec)))
57+
(update 2 dec))
58+
:unknown)
5759
",
58-
name, name, name
60+
name, name, name, name
5961
)
6062
}
6163

src/pool.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl Connection {
8181
go_to_definition_server
8282
.err_writeln(&format!("Error while going to definition: {}", msg))
8383
}
84-
} else {
84+
} else if msg == ":unknown" {
8585
go_to_definition_server.err_writeln("Location unknown");
8686
},
8787
Ok(Response::Err(_)) => (),

0 commit comments

Comments
 (0)