@@ -163,17 +163,18 @@ you'd like to use the default Emacs behavior use
163
163
:type 'symbol
164
164
:group 'cider-repl )
165
165
166
- (defcustom cider-repl-print-length 100
167
- " Initial value for *print-length* set during REPL start."
168
- :type 'integer
169
- :group 'cider
170
- :package-version '(cider . " 0.17.0" ))
166
+ (make-obsolete-variable 'cider-repl-print-length 'cider-print-options " 0.21" )
167
+ (make-obsolete-variable 'cider-repl-print-level 'cider-print-options " 0.21" )
171
168
172
- (defcustom cider-repl-print-level nil
173
- " Initial value for *print-level* set during REPL start."
174
- :type 'integer
175
- :group 'cider
176
- :package-version '(cider . " 0.17.0" ))
169
+ (defvar cider-repl-require-repl-utils-code
170
+ " (clojure.core/apply clojure.core/require clojure.main/repl-requires)" )
171
+
172
+ (defcustom cider-repl-init-code (list cider-repl-require-repl-utils-code)
173
+ " Clojure code to evaluate when starting a REPL.
174
+ Will be evaluated with bindings for set!-able vars in place."
175
+ :type '(list string)
176
+ :group 'cider-repl
177
+ :package-version '(cider . " 0.21.0" ))
177
178
178
179
(defcustom cider-repl-display-help-banner t
179
180
" When non-nil a bit of help text will be displayed on REPL start."
@@ -252,51 +253,37 @@ This cache is stored in the connection buffer.")
252
253
(cider-refresh-dynamic-font-lock ns-dict))))))))))
253
254
254
255
(declare-function cider-set-buffer-ns " cider-mode" )
255
- (defun cider-repl-set-initial-ns (buffer )
256
- " Require standard REPL util functions and set the ns of the REPL's BUFFER.
257
- Namespace is \" user\" by default, but can be overridden in apps like
258
- lein (:init-ns). Both of these operations need to be done as a sync
259
- request at the beginning of the session. Bundling them together for
260
- efficiency."
261
- ; ; we don't want to get a timeout during init
262
- (let ((nrepl-sync-request-timeout nil ))
256
+ (defun cider-repl--set-initial-ns (buffer )
257
+ " Set the initial namespace of the REPL's BUFFER.
258
+ This is \" user\" by default, but can be overridden (e.g. the Leiningen
259
+ :init-ns option)."
260
+ (let* ((response (nrepl-send-sync-request
261
+ (thread-first (nrepl--eval-request " " )
262
+ (lax-plist-put " inhibit-cider-middleware" " true" ))
263
+ (cider-current-repl)))
264
+ (ns (nrepl-dict-get response " ns" " user" )))
263
265
(with-current-buffer buffer
264
- (let* ((response (nrepl-send-sync-request
265
- (lax-plist-put (nrepl--eval-request " (str *ns*)" )
266
- " inhibit-cider-middleware" " true" )
267
- (cider-current-repl)))
268
- (initial-ns (or (read (nrepl-dict-get response " value" ))
269
- " user" )))
270
- (cider-set-buffer-ns initial-ns)))))
266
+ (cider-set-buffer-ns ns))))
271
267
272
268
(defun cider-repl-require-repl-utils ()
273
269
" Require standard REPL util functions into the current REPL."
274
270
(interactive )
275
271
(nrepl-send-sync-request
276
272
(lax-plist-put
277
273
(nrepl--eval-request
278
- " (when (clojure.core/resolve 'clojure.main/repl-requires)
279
- (clojure.core/map clojure.core/require clojure.main/repl-requires))" )
274
+ cider-repl-require-repl-utils-code)
280
275
" inhibit-cider-middleware" " true" )
281
276
(cider-current-repl)))
282
277
283
- (defun cider-repl--build-config-expression ()
284
- " Build the initial config expression."
285
- (when (or cider-repl-print-length cider-repl-print-level)
286
- (concat
287
- " (do"
288
- (when cider-repl-print-length (format " (set! *print-length* %d ) " cider-repl-print-length))
289
- (when cider-repl-print-level (format " (set! *print-level* %d ) " cider-repl-print-level))
290
- " )" )))
291
-
292
- (defun cider-repl-set-config ()
293
- " Set an inititial REPL configuration."
278
+ (defun cider-repl-eval-init-code ()
279
+ " Evaluate `cider-repl-init-code' in the current REPL."
294
280
(interactive )
295
- (when-let* ((config-expression ( cider-repl--build-config-expression)))
281
+ (when cider-repl-init-code
296
282
(nrepl-send-sync-request
297
- (lax-plist-put
298
- (nrepl--eval-request config-expression)
299
- " inhibit-cider-middleware" " true" )
283
+ (thread-first cider-repl-init-code
284
+ (string-join " \n " )
285
+ (nrepl--eval-request)
286
+ (lax-plist-put " inhibit-cider-middleware" " true" ))
300
287
(cider-current-repl))))
301
288
302
289
(defun cider-repl-init (buffer &optional no-banner )
@@ -316,9 +303,8 @@ client process connection. Unless NO-BANNER is non-nil, insert a banner."
316
303
; ; against user config
317
304
(set-buffer orig-buffer)))
318
305
((pred identity) (pop-to-buffer buffer)))
319
- (cider-repl-set-initial-ns buffer)
320
- (cider-repl-require-repl-utils)
321
- (cider-repl-set-config)
306
+ (cider-repl--set-initial-ns buffer)
307
+ (cider-repl-eval-init-code)
322
308
(unless no-banner
323
309
(cider-repl--insert-banner-and-prompt buffer))
324
310
(with-current-buffer buffer
0 commit comments