From 610663cbe237556909220dcbcb6cb79530228757 Mon Sep 17 00:00:00 2001 From: Marcus Kammer Date: Wed, 15 Nov 2023 18:34:55 +0100 Subject: [PATCH] Enable running lisp files as scripts --- .sbclrc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.sbclrc b/.sbclrc index c282ecf..40c647e 100644 --- a/.sbclrc +++ b/.sbclrc @@ -7,6 +7,26 @@ (abort)) *debugger-hook* (setf *debugger-hook* #'print-condition-hook) +;;; If the first user-processable command-line argument is a filename, +;;; disable the debugger, load the file handling shebang-line and quit. +(let ((script (and (second *posix-argv*) + (probe-file (second *posix-argv*))))) + (when script + ;; Handle shebang-line + (set-dispatch-macro-character #\# #\! + (lambda (stream char arg) + (declare (ignore char arg)) + (read-line stream))) + ;; Disable debugger + (setf *invoke-debugger-hook* + (lambda (condition hook) + (declare (ignore hook)) + ;; Uncomment to get backtraces on errors + ;; (sb-debug:backtrace 20) + (format *error-output* "Error: ~A~%" condition) + (quit))) + (load script) + (quit))) ;;; The following lines added by ql:add-to-init-file: #-quicklisp (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"