|
|
|
;;; lisp-mode-settings.el --- Settings for lisp modes.
|
|
|
|
;; Slime - requires SBCL to be installed in /usr/local/bin/ (default for the install.sh
|
|
|
|
;; script)
|
|
|
|
|
|
|
|
(use-package paredit
|
|
|
|
:ensure t
|
|
|
|
:hook ((emacs-lisp-mode . enable-paredit-mode)
|
|
|
|
(eval-expression-minibuffer-setup . enable-paredit-mode)
|
|
|
|
(ielm-mode . enable-paredit-mode)
|
|
|
|
(lisp-mode . enable-paredit-mode)
|
|
|
|
(lisp-interaction-mode . enable-paredit-mode)
|
|
|
|
(scheme-mode . enable-paredit-mode)))
|
|
|
|
|
|
|
|
(use-package rainbow-delimiters
|
|
|
|
:ensure t
|
|
|
|
:hook ((clojure-mode . rainbow-delimiters-mode)
|
|
|
|
(lisp-mode . rainbow-delimiters-mode)
|
|
|
|
(scheme-mode . rainbow-delimiters-mode)
|
|
|
|
(emacs-lisp-mode . rainbow-delimiters-mode)))
|
|
|
|
|
|
|
|
;; Force code to always be indented correctly.
|
|
|
|
(use-package aggressive-indent
|
|
|
|
:ensure t
|
|
|
|
:hook ((emacs-lisp-mode . aggressive-indent-mode)
|
|
|
|
(lisp-mode . aggressive-indent-mode)
|
|
|
|
(scheme-mode . aggressive-indent-mode)
|
|
|
|
(clojure-mode . aggressive-indent-mode)))
|
|
|
|
|
|
|
|
(use-package slime
|
|
|
|
:ensure t
|
|
|
|
:config
|
|
|
|
(global-unset-key (kbd "<f1>"))
|
|
|
|
(global-unset-key (kbd "<f2>"))
|
|
|
|
(define-key lisp-mode-map (kbd "<f1>") 'slime-eval-buffer)
|
|
|
|
(define-key lisp-mode-map (kbd "<f2>") 'slime-eval-defun))
|
|
|
|
|
|
|
|
(setq inferior-lisp-program "sbcl")
|
|
|
|
(setq slime-contribs '(slime-fancy))
|
|
|
|
|
|
|
|
;; Enable paredit for lisp
|
|
|
|
(autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t)
|
|
|
|
|
|
|
|
;; Autoload the indent function
|
|
|
|
(autoload 'common-lisp-indent-function "cl-indent" "Common Lisp indent.")
|
|
|
|
|
|
|
|
(defun override-slime-repl-bindings-with-paredit ()
|
|
|
|
(define-key slime-repl-mode-map
|
|
|
|
(read-kbd-macro paredit-backward-delete-key) nil))
|
|
|
|
|
|
|
|
(add-hook 'slime-repl-mode-hook 'override-slime-repl-bindings-with-paredit)
|
|
|
|
|
|
|
|
;;---------------------------------------------------------
|
|
|
|
;; SLIME Quicklisp Integration.
|
|
|
|
;;---------------------------------------------------------
|
|
|
|
(when (file-exists-p "~/quicklisp/slime-helper.el")
|
|
|
|
(load (expand-file-name "~/quicklisp/slime-helper.el"))
|
|
|
|
(setq inferior-lisp-program "sbcl"))
|