From 64ec173e01d1808390be5fa59898c2ded677cc0f Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Thu, 3 Sep 2026 00:18:15 -0700 Subject: sbcl: Make ‘C-d’ quit the REPL on an empty line I'm quite used to typing in ‘C-d’ to quit any kind of REPL. Most accept that an EOF marker showing up means that it's time to quit. SBCL (with linedit) just reports that it's happened. This change makes it work the way I prefer again. --- sbcl/sbclrc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'sbcl') diff --git a/sbcl/sbclrc b/sbcl/sbclrc index 228ae53..47baaef 100644 --- a/sbcl/sbclrc +++ b/sbcl/sbclrc @@ -7,12 +7,20 @@ (when (probe-file quicklisp-init) (load quicklisp-init))) +(require :linedit) + ;;; Enable linedit, a readline-like module for SBCL. Install through ;;; (ql:quickload "linedit"). (if (member "--no-linedit" sb-ext:*posix-argv* :test 'equal) (setf sb-ext:*posix-argv* (remove "--no-linedit" sb-ext:*posix-argv* :test 'equal)) (when (interactive-stream-p *terminal-io*) + (require :asdf) (require :sb-aclrepl) - (require :linedit) - (funcall (intern "INSTALL-REPL" :linedit) :wrap-current t))) + (funcall (intern "INSTALL-REPL" :linedit) :wrap-current t) + + (defun delete-char-forwards-or-quit (chord editor) + (if (equal "" (linedit::get-string editor)) + (sb-ext:quit) + (linedit::delete-char-forwards chord editor))) + (linedit::defcommand "C-D" 'delete-char-forwards-or-quit))) -- cgit v1.3-2-g0d8e