From 02d88e36e911e76842369e565ca2dae9a7922f7b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Tue, 28 Nov 2023 18:33:09 -0600 Subject: [PATCH] Unbreak Eglot, Jsonrpc as EIEIO inches closer to CLOS (bug#67480) EIEIO is an innacurate emulation of CLOS in many aspects and one of them in accessor definition. Before this commit commit 6c47931a1ad4de4af3f147b9604169c2441100fe Author: Brandon Date: Sat Nov 4 17:11:32 2023 -0400 Make EIEIO ':accessor' behave like ':reader' when reading (bug#66938) An :initform-less, non-:initarg'ed slot with be read using an :accessor which would just return nil. This is EIEIO specific of course, but it made for (my) sloppy programming in jsonrpc.el and eglot.el. Tightening up the rules a bit meant these things broke and now I'm fixing them. * lisp/jsonrpc.el (jsonrpc-connection): Add a bunch of :initform nil (jsonrpc-process-connection): Add a bunch of :initform nil * lisp/progmodes/eglot.el (eglot-lsp-server): Add a bunch of :initform nil --- lisp/jsonrpc.el | 3 +++ lisp/progmodes/eglot.el | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el index 52ffb220d8b..3cba9636e02 100644 --- a/lisp/jsonrpc.el +++ b/lisp/jsonrpc.el @@ -64,6 +64,7 @@ :initarg :notification-dispatcher :documentation "Dispatcher for remotely invoked notifications.") (last-error + :initform nil :accessor jsonrpc-last-error :documentation "Last JSONRPC error message received from endpoint.") (-request-continuations @@ -71,6 +72,7 @@ :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 @@ -353,6 +355,7 @@ ignored." :initarg :process :accessor jsonrpc--process :documentation "Process object wrapped by the this connection.") (-expected-bytes + :initform nil :accessor jsonrpc--expected-bytes :documentation "How many bytes declared by server.") (-on-shutdown diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 48ea33c3ee1..d410367f902 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -977,15 +977,19 @@ ACTION is an LSP object of either `CodeAction' or `Command' type." :accessor eglot--project-nickname :reader eglot-project-nickname) (languages + :initform nil :documentation "Alist ((MODE . LANGUAGE-ID-STRING)...) of managed languages." :accessor eglot--languages) (capabilities + :initform nil :documentation "JSON object containing server capabilities." :accessor eglot--capabilities) (server-info + :initform nil :documentation "JSON object containing server info." :accessor eglot--server-info) (shutdown-requested + :initform nil :documentation "Flag set when server is shutting down." :accessor eglot--shutdown-requested) (project @@ -1002,6 +1006,7 @@ ACTION is an LSP object of either `CodeAction' or `Command' type." :documentation "Map (DIR -> (WATCH ID1 ID2...)) for `didChangeWatchedFiles'." :initform (make-hash-table :test #'equal) :accessor eglot--file-watches) (managed-buffers + :initform nil :documentation "List of buffers managed by server." :accessor eglot--managed-buffers) (saved-initargs -- 2.39.2