Skip to content

Recognize let-go as a known nREPL runtime#3926

Merged
bbatsov merged 1 commit into
masterfrom
let-go-runtime
May 20, 2026
Merged

Recognize let-go as a known nREPL runtime#3926
bbatsov merged 1 commit into
masterfrom
let-go-runtime

Conversation

@bbatsov
Copy link
Copy Markdown
Member

@bbatsov bbatsov commented May 20, 2026

let-go is a Clojure dialect implemented in Go that ships an nREPL server. Connections work today via plain cider-connect-clj, but cider-runtime reported generic, so the connection info line was bare.

This PR teaches CIDER about the runtime:

  • cider--let-go-version reads the let-go key from the describe response's versions map. let-go reports separate major/minor fields rather than a version-string, so the helper formats MAJOR.MINOR.
  • cider-runtime returns let-go for these connections.
  • cider--set-connection-capabilities adds let-go to the capability list (informational only, matching the babashka/nbb/scittle pattern).
  • cider--connection-info gets a new clause so the info line shows (let-go 1.0) instead of falling through to the bare format.
  • Listed on the "Other Platforms" docs page.

Verified end-to-end against let-go 2.0.2: connection info reads CLJ project@localhost:2137 (let-go 1.0) and a basic (+ 1 2) eval round-trips.

let-go's nREPL supports the core ops (clone, close, eval, load-file, describe, completions, complete, info, lookup, ls-sessions, interrupt) but not the cider-nrepl middleware, so the feature set you get is bare nREPL plus inline completion/info. The "Other Platforms" page already documents that limitation.

let-go (https://github.com/nooga/let-go) is a Clojure dialect
implemented in Go that ships an nREPL server.  Connections work today
via plain `cider-connect-clj`, but `cider-runtime` reported `generic`
for them, so the connection info line was bare (no runtime version).

Add a `cider--let-go-version` helper that reads the `let-go` key from
the `describe` response's `versions` map (let-go reports separate
`major`/`minor` fields rather than a `version-string`, hence the
custom format).  Wire it into `cider-runtime`, the capability table
in `cider--connected-handler`, and the `cider--connection-info`
runtime cond.

Also list let-go on the "Other Platforms" docs page.

Verified end-to-end against a running let-go 2.0.2 nREPL: connection
info reads `CLJ project@localhost:2137 (let-go 1.0)` and a simple
`(+ 1 2)` round-trips as expected.
@bbatsov bbatsov merged commit 05fa6ba into master May 20, 2026
13 checks passed
@bbatsov bbatsov deleted the let-go-runtime branch May 20, 2026 12:12
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

Successfully merging this pull request may close these issues.

1 participant