;;; -*- lexical-binding: t -*- ;; ;; install quicklisp and cl-sdl2: ;; $ sudo apt-get --install-suggests install \*sbcl\* libsdl2-\* ;; $ mkdir -p ~/common-lisp ;; $ cd ~/common-lisp ;; $ wget 'https://beta.quicklisp.org/quicklisp.lisp' ;; ;; $ sbcl --load quicklisp.lisp ;; * (quicklisp-quickstart:install) ;; * (ql:add-to-init-file) ;; * (ql:quickload 'swank) ;; * (swank-loader:dump-image "sbcl.core-with-swank") ;; * (quit) ;; ;; CL-USER> (load "~/quicklisp/setup.lisp") ;; CL-USER> (ql:quickload "quicklisp-slime-helper") ;; CL-USER> (ql:update-dist "quicklisp") ;; CL-USER> (ql:update-client) ;; ;; CL-USER> (ql:quickload "cl-glut") ;; CL-USER> (ql:quickload "cl-opengl") ;; CL-USER> (ql:quickload "sdl2") ;; ;; -------------------------------------------------------------------------------- (require 'luki-lisp) ;; -------------------------------------------------------------------------------- (-> 'abbrev) (-> 'slime) (-> 'slime-autoloads) (-> 'slime-banner) (-> 'slime-repl) ;; -------------------------------------------------------------------------------- ;; quicklisp slime helper (load (expand-file-name "~/quicklisp/slime-helper.el")) ;; -------------------------------------------------------------------------------- ;; slime fanfare (setq slime-startup-animation nil) (setq slime-words-of-encouragement nil) ;; -------------------------------------------------------------------------------- ;; sbcl (setq inferior-lisp-program "/bin/sbcl") (let ((sbcl "sbcl") (opt "--core") (swank (expand-file-name "~/cl/sbcl.core-with-swank"))) (setq slime-lisp-implementations (list `(sbcl ,(list sbcl opt swank) :init (L (port-file _) (@f "(swank:start-server %S)\n" port-file)))))) ;; -------------------------------------------------------------------------------- ;; below: keys and hooks ;; -------------------------------------------------------------------------------- ;; sldb (defun sldb-mode-hook-f () (keymap-set sldb-mode-map "1" ($ "music is the key to fall in love"))) (add-hook 'sldb-mode-hook #'sldb-mode-hook-f) ;; -------------------------------------------------------------------------------- ;; slime (defun slime-mode-set-keys () (let ((kmap slime-mode-indirect-map)) (keymap-set kmap "C-h f" #'slime-describe-function) (keymap-set kmap "M-9" #'slime-eval-last-expression) (keymap-set kmap "M-n" #'slime-eval-buffer))) (defun slime-mode-hook-f () (abbrev-mode) (slime-mode-set-keys)) (add-hook 'slime-mode-hook #'slime-mode-hook-f) ;; -------------------------------------------------------------------------------- ;; slime repl (defun slime-repl-mode-set-keys () (let ((kmap slime-repl-mode-map)) (keymap-set kmap "C-M-n" #'slime-repl-next-input) (keymap-set kmap "C-M-p" #'slime-repl-previous-input))) (defun slime-repl-mode-hook-f () (slime-repl-mode-set-keys)) (add-hook 'slime-repl-mode-hook #'slime-repl-mode-hook-f) ;; -------------------------------------------------------------------------------- (<- 'll-slime)