Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions quicklisp/client.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,27 @@
:initarg :system
:reader not-quickloadable-system)))

(defgeneric quickload (systems &key verbose prompt explain &allow-other-keys)
(defun maybe-silence (silent stream)
(or (and silent (make-broadcast-stream)) stream))

(defgeneric quickload (systems &key verbose silent prompt explain &allow-other-keys)
(:documentation
"Load SYSTEMS the quicklisp way. SYSTEMS is a designator for a list
of things to be loaded.")
(:method (systems &key
(prompt *quickload-prompt*)
(silent nil)
(verbose *quickload-verbose*) &allow-other-keys)
(unless (consp systems)
(setf systems (list systems)))
(dolist (thing systems systems)
(flet ((ql ()
(autoload-system-and-dependencies thing :prompt prompt)))
(if verbose
(ql)
(call-with-quiet-compilation #'ql))))))
(let ((*standard-output* (maybe-silence silent *standard-output*))
(*trace-output* (maybe-silence silent *trace-output*)))
(unless (consp systems)
(setf systems (list systems)))
(dolist (thing systems systems)
(flet ((ql ()
(autoload-system-and-dependencies thing :prompt prompt)))
(if verbose
(ql)
(call-with-quiet-compilation #'ql)))))))

(defmethod quickload :around (systems &key verbose prompt explain
&allow-other-keys)
Expand Down