clojure-emacs / clojure-emacs/cider

Figure out how to encode nil and an empty list differently

Open
#2,362 8 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted high priority nREPL
Dominant language
Emacs Lisp
Stars
3.7k
Forks
651
Avg merge
11h 6m
Merged PRs (30d)
33

Description

One big pain when working with nREPL today is that in Emacs a `nil` and an empty list are the same thing. This means that nils and empty lists get encoded the same way (as empty lists) in nREPL requests and we can't differentiate them in the nREPL middlewares.

We need to figure out a some special way to encode nil to avoid problems like https://github.com/clojure-emacs/cider/issues/2357 down the road.

@vspinu Any thoughts on this? I was thinking we might just treat some symbol specially - e.g. `nrepl/nil` or something like this. It's extremely unlikely something like this would come up in user code.

Contributor guide

Open the contributing guide

Research direction

Start by examining how nREPL requests encode nil and empty lists, then read the related CIDER issue 2357 and the middleware handling involved. Done means the protocol can distinguish nil from an empty list without creating ambiguity with user code.

Written by the indexing model from the issue text.

Assessment

Tech stack
clojure, emacs-lisp
Domain
api, developer-experience
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.