Subject: bug#67480: 30.0.50; Cannot start eglot

From: João Távora <[email-masked]>
Date: Tue, 28 Nov 2023 17:27:33 +0000

On Tue, Nov 28, 2023, 15:48 Stefan Monnier <[email-masked]> wrote:

> >> diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el
> >> index 52ffb220d8b..4298d75c5bf 100644
> >> --- a/lisp/jsonrpc.el
> >> +++ b/lisp/jsonrpc.el
> >> @@ -71,6 +71,7 @@ jsonrpc-connection
> >>      :accessor jsonrpc--request-continuations
> >>      :documentation "A hash table of request ID to continuation
> lambdas.")
> >>     (-events-buffer
> >> +    :initform nil
> >>      :accessor jsonrpc--events-buffer
> >>      :documentation "A buffer pretty-printing the JSONRPC events")
> >>     (-events-buffer-scrollback-size
> >
> > Seem sensible, and feel free to push, please.
> >
> > But it'd also be nice to have a backtrace to that error to
>
> Have you tried the recipe sent by Mou Tong?
>

No. Didn't have the chance.

> see why jsonrpc.el is trying to access the jsonrpc--events-buffer
> > "too early".
>
> Not sure what you mean by "too early".  Where is this slot filled?
>

No, I meant where it is read.

The only place I see is in `jsonrpc-events-buffer` where we always read
> it before setting it.

I don't have the code in front of me, but ok, so a lazy slot.

So maybe another fix would be to put a :before in the accessor generic.
Then the accessor could lose the '--', and simplify things. AFAIR this is a
standard CLOS technique for lazy slots. But the nil initial value works
fine too.

João