File: slime-quicklisp.el

package info (click to toggle)
slime 2%3A2.26.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 4,732 kB
  • sloc: lisp: 49,441; ruby: 321; makefile: 237; awk: 10
file content (51 lines) | stat: -rw-r--r-- 1,697 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(require 'slime)
(require 'cl-lib)

;;; bits of the following taken from slime-asdf.el

(define-slime-contrib slime-quicklisp
  "Quicklisp support."
  (:authors "Matthew Kennedy <burnsidemk@gmail.com>")
  (: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)