(require 'slime) (require 'cl-lib) ;;; bits of the following taken from slime-asdf.el (define-slime-contrib slime-quicklisp "Quicklisp support." (:authors "Matthew Kennedy ") (:license "GPL") (:slime-dependencies slime-repl) (:swank-dependencies swank-quicklisp)) ;;; Utilities (defgroup slime-quicklisp nil "Quicklisp support for Slime." :prefix "slime-quicklisp-" :group 'slime) (defvar slime-quicklisp-system-history nil "History list for Quicklisp system names.") (defun slime-read-quicklisp-system-name (&optional prompt default-value) "Read a Quick system name from the minibuffer, prompting with PROMPT." (let* ((completion-ignore-case nil) (prompt (or prompt "Quicklisp system")) (quicklisp-system-names (slime-eval `(swank:list-quicklisp-systems))) (prompt (concat prompt (if default-value (format " (default `%s'): " default-value) ": ")))) (completing-read prompt (slime-bogus-completion-alist quicklisp-system-names) nil nil nil 'slime-quicklisp-system-history default-value))) (defun slime-quicklisp-quickload (system) "Load a Quicklisp system." (slime-save-some-lisp-buffers) (slime-display-output-buffer) (slime-repl-shortcut-eval-async `(ql:quickload ,system))) ;;; REPL shortcuts (defslime-repl-shortcut slime-repl-quicklisp-quickload ("quicklisp-quickload" "ql") (:handler (lambda () (interactive) (slime-quicklisp-quickload (slime-read-quicklisp-system-name)))) (:one-liner "Load a system known to Quicklisp.")) (provide 'slime-quicklisp)