Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jump-to-definition goes to line 1 column 1 for all locally-defined vars #65

Closed
daveliepmann opened this issue Sep 12, 2023 · 8 comments
Closed

Comments

@daveliepmann
Copy link

Continuation of clojure-emacs/cider#3456. Clojurians thread.

I'm trying to get jump-to-definition working in CIDER with babashka. CIDER folks say babashka-nrepl is not returning sufficient information per the API contract.

  1. bb nrepl-server and cider-connect localhost 1167
  2. evaluate the ns
  3. evaluate a var foo
  4. refer to foo somewhere else
  5. M-. at the reference --> sent to top of buffer instead of place where foo is defined

Per CIDER REPL buffer I'm on
;; CIDER 1.8.0-snapshot, babashka.nrepl 0.0.6-SNAPSHOT
;; Babashka 1.3.181

How to proceed?

@borkdude
Copy link
Contributor

I think a thing like this might be happening. This is in JVM Clojure, but the behavior is the same in bb:

Clojure 1.10.3
user=> ((juxt :file :line :column) (meta #'inc))
["clojure/core.clj" 924 1]
user=> (load-string "(in-ns 'clojure.core) (clojure.core/defn inc [x] (clojure.core/+ x 1))")
#'clojure.core/inc
user=> ((juxt :file :line :column) (meta #'inc))
["NO_SOURCE_FILE" 1 23]

@daveliepmann
Copy link
Author

You're absolutely right, borkdude.

Given bb/mvp.clj:

(ns mvp)

(def foo 1)

foo

from the REPL:

  1. (load-file "bb/mvp.clj")
  2. per
    (let [ns '%s
    full-sym '%s]
    (when-let [v (ns-resolve ns full-sym)]
    (let [m (meta v)]
    (assoc m :arglists (:arglists m)
    :doc (:doc m)
    :name (:name m)
    :ns (some-> m :ns ns-name)
    :val @v))))" ns-str sym-str))
    we seem to know the correct line:
user> (let [ns 'mvp
      full-sym 'foo]
  (when-let [v (ns-resolve ns full-sym)]
    (let [m (meta v)]
      (assoc m :arglists (:arglists m)
       :doc (:doc m)
       :name (:name m)
       :ns (some-> m :ns ns-name)
       :val @v))))
{:name foo, :ns mvp, :file "/Users/daveliepmann/src/path/to/bb/mvp.clj", :line 3, :column 1, :arglists nil, :doc nil, :val 1}

@daveliepmann
Copy link
Author

*nrepl-messages* after cider-connect, eval ns, and attempt to jump to def of csk/->kebab-case and then eval (meta #'csk/->kebab-case) in this ns:

(ns mvp
  (:require [clojure.string :as string]
            [clj-yaml.core :as yaml]
            [camel-snake-kebab.core :as csk]))

(def foo 1)

foo


inc

string/re-quote-replacement

yaml/generate-stream

csk/->kebab-case

(meta #'csk/->Camel_Snake_Case)

(meta #'csk/->kebab-case)

with bb.edn of

{:paths ["bb"]
 :deps {camel-snake-kebab/camel-snake-kebab {:mvn/version "0.4.2"}}}
(-->
  id         "1"
  op         "clone"
  time-stamp "2023-09-12 22:46:18.369777000"
)
(<--
  id          "1"
  session     "none"
  time-stamp  "2023-09-12 22:46:18.380999000"
  new-session "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  status      ("done")
)
(-->
  id         "2"
  op         "clone"
  time-stamp "2023-09-12 22:46:18.397317000"
)
(<--
  id          "2"
  session     "none"
  time-stamp  "2023-09-12 22:46:18.406682000"
  new-session "415860c5-84b3-4086-9117-fa646eb74883"
  status      ("done")
)
(-->
  id         "3"
  op         "describe"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.424680000"
)
(<--
  id         "3"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.428654000"
  ops        (dict ...)
  status     ("done")
  versions   (dict ...)
)
(-->
  id                                 "4"
  op                                 "eval"
  session                            "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp                         "2023-09-12 22:46:18.450265000"
  code                               "(when-let [requires (resolve 'clojure.main/repl-requires)]
 ..."
  column                             1
  file                               "*cider-repl knowuro-cljd/bb:localhost:1667(clj)*"
  inhibit-cider-middleware           "true"
  line                               10
  nrepl.middleware.print/buffer-size 4096
  nrepl.middleware.print/options     (dict ...)
  nrepl.middleware.print/print       "cider.nrepl.pprint/puget-pprint"
  nrepl.middleware.print/quota       1048576
  nrepl.middleware.print/stream?     "1"
)
(<--
  id         "4"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.483359000"
  ns         "user"
  value      "nil"
)
(<--
  id         "4"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.483715000"
  status     ("done")
)
(-->
  id         "5"
  op         "eval"
  session    "415860c5-84b3-4086-9117-fa646eb74883"
  time-stamp "2023-09-12 22:46:18.485823000"
  code       "cljs.core/demunge"
)
(<--
  id         "5"
  session    "415860c5-84b3-4086-9117-fa646eb74883"
  time-stamp "2023-09-12 22:46:18.492105000"
  err        ": Could not resolve symbol: cljs.core/demunge user REPL:1:1
"
)
(<--
  id         "5"
  session    "415860c5-84b3-4086-9117-fa646eb74883"
  time-stamp "2023-09-12 22:46:18.492297000"
  ex         "class "
  root-ex    "class "
  status     ("eval-error")
)
(<--
  id         "5"
  session    "415860c5-84b3-4086-9117-fa646eb74883"
  time-stamp "2023-09-12 22:46:18.494435000"
  status     ("done")
)
(-->
  id              "6"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.512342000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "6"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.516386000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "7"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.540497000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "7"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.542497000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "8"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.566603000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "8"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.568581000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "9"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.593034000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "9"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.595280000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "10"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.619177000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "10"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.620919000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "11"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.646310000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "11"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.648322000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "12"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.672376000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "12"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.675722000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "13"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.701759000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "13"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.703665000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "14"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.728154000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "14"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.732818000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "15"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.759197000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "15"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.765386000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "16"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.789944000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "16"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.792966000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "17"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.819394000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "17"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.821412000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "18"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.848158000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "18"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.851994000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "19"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.895427000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "19"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.899860000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "20"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.925209000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "20"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.929889000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "21"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.960902000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "21"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.964985000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "22"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:18.995616000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "22"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:18.998394000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "23"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.030026000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "23"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.032842000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "24"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.058693000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "24"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.060773000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "25"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.089729000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "25"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.092946000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "26"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.118603000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "26"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.121758000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "27"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.153455000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "27"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.158472000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "28"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.188976000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "28"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.195681000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "29"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.221216000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "29"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.225555000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "30"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.250810000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "30"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.254620000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "31"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.277495000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "31"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.283331000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "32"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.307755000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "32"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.321532000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "33"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.346659000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "33"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.350232000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "34"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.376268000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "34"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.378519000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "35"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.409102000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "35"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.414525000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "36"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.442287000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "36"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.445582000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "37"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.471317000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "37"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.477075000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "38"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.500564000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "38"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.503972000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "39"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.530500000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "39"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.537596000"
  status     ("error" "unknown-op" "done")
)
(-->
  id              "40"
  op              "ns-list"
  session         "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp      "2023-09-12 22:46:19.559242000"
  exclude-regexps ("^cider.nrepl" "^refactor-nrepl" "^nrepl")
)
(<--
  id         "40"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.568713000"
  status     ("error" "unknown-op" "done")
)
(-->
  id                           "41"
  op                           "version"
  session                      "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp                   "2023-09-12 22:46:19.587166000"
  debug                        "false"
  insert-newline-after-require "true"
  prefix-rewriting             "false"
)
(<--
  id         "41"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.588693000"
  status     ("error" "unknown-op" "done")
)
(-->
  id                           "42"
  op                           "version"
  session                      "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp                   "2023-09-12 22:46:19.620141000"
  debug                        "false"
  insert-newline-after-require "true"
  prefix-rewriting             "false"
)
(<--
  id         "42"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:19.621137000"
  status     ("error" "unknown-op" "done")
)
(-->
  id                             "43"
  op                             "eval"
  session                        "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp                     "2023-09-12 22:46:22.158817000"
  code                           "(ns mvp
  (:require [clojure.string :as string]
            ..."
  column                         1
  file                           "/Users/daveliepmann/src/knowuro/knowuro-cljd/bb/mvp.clj"
  line                           1
  nrepl.middleware.print/print   "cider.nrepl.pprint/pr"
  nrepl.middleware.print/quota   1048576
  nrepl.middleware.print/stream? nil
  ns                             "user"
)
(<--
  id         "43"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:22.228900000"
  ns         "mvp"
  value      "nil"
)
(<--
  id         "43"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:22.231407000"
  status     ("done")
)
(-->
  id         "44"
  op         "info"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:26.750302000"
  ns         #("mvp" 0 3 (fontified t help-echo cider--help-echo cider-locals nil cider-block-dynamic-font-lock t face font-lock-type-face))
  sym        "csk/->kebab-case"
)
(<--
  id           "44"
  session      "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp   "2023-09-12 22:46:26.755712000"
  arglists-str "[s__302__auto__ & rest__303__auto__]"
  file         "camel_snake_kebab/core.cljc"
  line         54
  name         "->kebab-case"
  ns           "camel-snake-kebab.core"
  status       ("done")
)
(-->
  id         "45"
  op         "eval"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:39.436667000"
  code       "(ns mvp
  (:require [clojure.string :as string]
            ..."
)
(<--
  id         "45"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:39.439342000"
  ns         "mvp"
  value      "nil"
)
(<--
  id         "45"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:39.439620000"
  status     ("done")
)
(-->
  id                             "46"
  op                             "eval"
  session                        "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp                     "2023-09-12 22:46:39.461630000"
  code                           "(meta #'csk/->kebab-case)"
  column                         1
  file                           "/Users/daveliepmann/src/knowuro/knowuro-cljd/bb/mvp.clj"
  line                           21
  nrepl.middleware.print/print   "cider.nrepl.pprint/pr"
  nrepl.middleware.print/quota   1048576
  nrepl.middleware.print/stream? nil
  ns                             #("mvp" 0 3 (fontified t help-echo cider--help-echo cider-locals nil cider-block-dynamic-font-lock t face font-lock-type-face))
)
(<--
  id         "46"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:39.474012000"
  ns         "mvp"
  value      "{:name ->kebab-case, :ns #object[sci.lang.Namespace 0x42da34..."
)
(<--
  id         "46"
  session    "105d7cf5-ea34-49e7-b4d8-13d24fe8c088"
  time-stamp "2023-09-12 22:46:39.479046000"
  status     ("done")
)

@vemv
Copy link

vemv commented Sep 13, 2023

As @borkdude noted over Slack, the file attribute normally is a jar:file[...] for third-party responses, and file: for local namespaces.

The following are cider-nrepl info responses for:

Local namespace under src

(<--
  id           "17"
  session      "d925bb5c-b750-407c-95d5-178893b40dfe"
  time-stamp   "2023-09-13 07:11:59.521526000"
  arglists-str "[klass]"
  column       1
  doc          "If the source for the Java class is available on the classpa..."
  file         "file:/Users/vemv/orchard/src-newer-jdks/orchard/java/parser_next.clj"
  line         214
  name         "source-info"
  ns           "orchard.java.parser-next"
  resource     "orchard/java/parser_next.clj"
  status       ("done")
)

Third-party namespace

(<--
  id           "16"
  session      "d925bb5c-b750-407c-95d5-178893b40dfe"
  time-stamp   "2023-09-13 07:09:15.930743000"
  added        "1.0"
  arglists-str "[bindings & body]"
  column       1
  doc          "bindings => binding-form test

  When test is true, evaluate..."
  file         "jar:file:/Users/vemv/.m2/repository/org/clojure/clojure/1.12.900/clojure-1.12.900.jar!/clojure/core.clj"
  line         1878
  macro        "true"
  name         "when-let"
  ns           "clojure.core"
  resource     "clojure/core.clj"
  see-also     ("clojure.core/if-let" "clojure.core/when" "clojure.core/when-not" "clojure.core/if" "clojure.core/when-first" "clojure.core/when-some")
  spec         ("clojure.spec.alpha/fspec" ":args"
 ("clojure.spec.alpha/cat" ":bindings"
  ("clojure.spec.alpha/and" "clojure.core/vector?" ":clojure.core.specs.alpha/binding")
  ":body"
  ("clojure.spec.alpha/*" "clojure.core/any?"))
 ":ret" "clojure.core/any?" ":fn" "")
  status       ("done")
)

Other formats can work, but they're less likely to:

  • "/Users/daveliepmann/src/knowuro/knowuro-cljd/bb/mvp.clj" can be open, as it's absolute
    • Note however that this can't work for. clj files within a .jar
  • "camel_snake_kebab/core.cljc" can only be open if there already happened to be an open buffer for it

Cheers - V

@borkdude
Copy link
Contributor

Cool, I'll adapt the nREPL server to return URLs (as strings) instead of how Clojure stores it as :file metadata! Thanks @vemv and @daveliepmann!

@daveliepmann
Copy link
Author

daveliepmann commented Sep 13, 2023

For completeness' sake, I started a JVM REPL from the command line per CIDER instructions with clj -Sdeps '{:deps {cider/cider-nrepl {:mvn/version "0.37.0"}}}' -m nrepl.cmdline (note: no --middleware "[cider.nrepl/cider-middleware]"), cider-connect'd to it from bb/mvp.clj (with csk & clj-yaml commented out), eval'd the ns and foo, and did jump-to-def for foo, which worked, producing the nrepl-messages in this gist.

@daveliepmann
Copy link
Author

🙇 🙏 Thanks!

@borkdude
Copy link
Contributor

borkdude commented Sep 28, 2023

Hope it helps. The original issue is still not fixed though: there's still line 1/column 1 for locally defined vars. I only fixed the URL return values, so navigating to a jar should now work. I'll open a new issue for the line 1 issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants