Skip to content

Commit 56d5ed3

Browse files
committed
[fix #750] make nrepl-pending-requests and nrepl-completed-requests truly local
1 parent 055bde5 commit 56d5ed3

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

nrepl-client.el

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,9 @@ To be used for tooling calls (i.e. completion, eldoc, etc)")
221221
(defvar-local nrepl-request-counter 0
222222
"Continuation serial number counter.")
223223

224-
(defvar-local nrepl-pending-requests (make-hash-table :test 'equal))
224+
(defvar-local nrepl-pending-requests nil)
225225

226-
(defvar-local nrepl-completed-requests (make-hash-table :test 'equal))
226+
(defvar-local nrepl-completed-requests nil)
227227

228228
(defvar-local nrepl-buffer-ns "user"
229229
"Current Clojure namespace of this buffer.")
@@ -533,7 +533,9 @@ within Emacs. Return the newly created client connection process."
533533
;; fixme: repl and connection buffers are the same thing
534534
nrepl-connection-buffer client-buf
535535
nrepl-repl-buffer (when replp client-buf)
536-
nrepl-on-connection-buffer proc-buffer-name))
536+
nrepl-on-connection-buffer proc-buffer-name
537+
nrepl-pending-requests (make-hash-table :test 'equal)
538+
nrepl-completed-requests (make-hash-table :test 'equal)))
537539

538540
(nrepl-make-connection-default client-buf)
539541

@@ -549,8 +551,9 @@ within Emacs. Return the newly created client connection process."
549551
"Return a handler to setup CONN-BUFFER as a connection buffer.
550552
If REPLP is non-nil, also initialize it as a REPL buffer."
551553
(lambda (response)
552-
(nrepl-dbind-response response (ops versions)
554+
(nrepl-dbind-response response (id ops versions)
553555
(with-current-buffer conn-buffer
556+
(remhash id nrepl-pending-requests)
554557
(setq nrepl-ops ops)
555558
(setq nrepl-versions versions)))
556559
(when replp
@@ -562,9 +565,9 @@ If REPLP is non-nil, also initialize it as a REPL buffer."
562565
"Create a new session handler for PROCESS."
563566
(lambda (response)
564567
(nrepl-dbind-response response (id new-session err)
565-
(remhash id nrepl-pending-requests)
566568
(if new-session
567569
(with-current-buffer (process-buffer process)
570+
(remhash id nrepl-pending-requests)
568571
(setq nrepl-session new-session))
569572
(error "Could not create new session (%s)" err))
570573
(run-hooks 'nrepl-connected-hook))))
@@ -696,9 +699,9 @@ REQUEST is a pair list of the form (\"op\" \"operation\" \"par1-name\"
696699
(request (append (list 'dict "id" request-id) request))
697700
(message (nrepl-bencode request)))
698701
(nrepl-log-message request)
699-
(puthash request-id callback nrepl-pending-requests)
700-
(process-send-string (nrepl-current-connection-buffer)
701-
message)))
702+
(with-current-buffer (nrepl-current-connection-buffer)
703+
(puthash request-id callback nrepl-pending-requests)
704+
(process-send-string nil message))))
702705

703706
(defun nrepl-request:clone (callback)
704707
"Sent a :clone request to create a new client session.

0 commit comments

Comments
 (0)