@@ -221,9 +221,9 @@ To be used for tooling calls (i.e. completion, eldoc, etc)")
221
221
(defvar-local nrepl-request-counter 0
222
222
" Continuation serial number counter." )
223
223
224
- (defvar-local nrepl-pending-requests ( make-hash-table :test 'equal ) )
224
+ (defvar-local nrepl-pending-requests nil )
225
225
226
- (defvar-local nrepl-completed-requests ( make-hash-table :test 'equal ) )
226
+ (defvar-local nrepl-completed-requests nil )
227
227
228
228
(defvar-local nrepl-buffer-ns " user"
229
229
" Current Clojure namespace of this buffer." )
@@ -463,11 +463,10 @@ specification. Everything else is encoded as string."
463
463
; ; Start decoding only if the last letter is 'e'
464
464
(when (eq ?e (aref string (1- (length string))))
465
465
(let ((response-q (process-get proc :response-q )))
466
- ; ; (nrepl-log-message string-q)
467
- ; ; (nrepl-log-message response-q)
468
466
(nrepl-bdecode string-q response-q)
469
- (while (queue-head response-q)
470
- (nrepl--dispatch-response (queue-dequeue response-q)))))))
467
+ (with-current-buffer (process-buffer proc)
468
+ (while (queue-head response-q)
469
+ (nrepl--dispatch-response (queue-dequeue response-q))))))))
471
470
472
471
(defun nrepl--dispatch-response (response )
473
472
" Dispatch the RESPONSE to associated callback.
@@ -480,7 +479,7 @@ older requests with \"done\" status."
480
479
(gethash id nrepl-completed-requests))))
481
480
(if callback
482
481
(funcall callback response)
483
- (funcall (nrepl--make-default-handler) response)))))
482
+ (error " No response handler with id %s found " id )))))
484
483
485
484
(defun nrepl-client-sentinel (process message )
486
485
" Handle sentinel events from PROCESS.
@@ -534,7 +533,9 @@ within Emacs. Return the newly created client connection process."
534
533
; ; fixme: repl and connection buffers are the same thing
535
534
nrepl-connection-buffer client-buf
536
535
nrepl-repl-buffer (when replp client-buf)
537
- 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 )))
538
539
539
540
(nrepl-make-connection-default client-buf)
540
541
@@ -550,8 +551,9 @@ within Emacs. Return the newly created client connection process."
550
551
" Return a handler to setup CONN-BUFFER as a connection buffer.
551
552
If REPLP is non-nil, also initialize it as a REPL buffer."
552
553
(lambda (response )
553
- (nrepl-dbind-response response (ops versions)
554
+ (nrepl-dbind-response response (id ops versions)
554
555
(with-current-buffer conn-buffer
556
+ (remhash id nrepl-pending-requests)
555
557
(setq nrepl-ops ops)
556
558
(setq nrepl-versions versions)))
557
559
(when replp
@@ -563,9 +565,9 @@ If REPLP is non-nil, also initialize it as a REPL buffer."
563
565
" Create a new session handler for PROCESS."
564
566
(lambda (response )
565
567
(nrepl-dbind-response response (id new-session err)
566
- (remhash id nrepl-pending-requests)
567
568
(if new-session
568
569
(with-current-buffer (process-buffer process)
570
+ (remhash id nrepl-pending-requests)
569
571
(setq nrepl-session new-session))
570
572
(error " Could not create new session (%s ) " err))
571
573
(run-hooks 'nrepl-connected-hook ))))
@@ -661,22 +663,6 @@ server responses."
661
663
(when done-handler
662
664
(funcall done-handler buffer))))))))
663
665
664
- (defun nrepl--make-default-handler ()
665
- " Default handler which is invoked when no handler is found.
666
- Handles only stdout and stderr responses."
667
- (nrepl-make-response-handler (cider-current-repl-buffer)
668
- ; ; VALUE
669
- '()
670
- ; ; STDOUT
671
- (lambda (buffer out )
672
- ; ; fixme: rename into emit-out-output
673
- (cider-repl-emit-output buffer out))
674
- ; ; STDERR
675
- (lambda (buffer err )
676
- (cider-repl-emit-err-output buffer err))
677
- ; ; DONE
678
- '()))
679
-
680
666
681
667
; ;; Client: Request Handling
682
668
@@ -713,9 +699,9 @@ REQUEST is a pair list of the form (\"op\" \"operation\" \"par1-name\"
713
699
(request (append (list 'dict " id" request-id) request))
714
700
(message (nrepl-bencode request)))
715
701
(nrepl-log-message request)
716
- (puthash request-id callback nrepl-pending-requests )
717
- ( process-send-string ( nrepl-current-connection-buffer )
718
- message)))
702
+ (with-current-buffer ( nrepl-current-connection-buffer )
703
+ ( puthash request-id callback nrepl-pending-requests )
704
+ ( process-send-string nil message) )))
719
705
720
706
(defun nrepl-request:clone (callback )
721
707
" Sent a :clone request to create a new client session.
0 commit comments