diff options
| author | 2026-09-03 00:18:15 -0700 | |
|---|---|---|
| committer | 2026-09-03 00:18:15 -0700 | |
| commit | 9b68985dc87c203d4575a70b5ec1c7faaf0deea3 (patch) | |
| tree | bbfed90bb57fad0155dd39e7788a6b951ab69eb3 | |
| parent | 69c188e35911f4f8ef294c1a3d1159c20eb4bebe (diff) | |
| download | new-dotfiles-9b68985dc87c203d4575a70b5ec1c7faaf0deea3.tar.gz new-dotfiles-9b68985dc87c203d4575a70b5ec1c7faaf0deea3.zip | |
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.
| -rw-r--r-- | sbcl/sbclrc | 12 |
1 files changed, 10 insertions, 2 deletions
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))) |
