;;; 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) (use-package slime :ensure t :config (global-unset-key (kbd "")) (global-unset-key (kbd "")) (define-key lisp-mode-map (kbd "") 'slime-eval-buffer) (define-key lisp-mode-map (kbd "") '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) (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) (add-hook 'eval-expression-minibuffer-setup-hook #'enable-paredit-mode) (add-hook 'ielm-mode-hook #'enable-paredit-mode) (add-hook 'lisp-mode-hook #'enable-paredit-mode) (add-hook 'lisp-interaction-mode-hook #'enable-paredit-mode) (add-hook 'scheme-mode-hook #'enable-paredit-mode) (add-hook 'clojure-mode-hook 'rainbow-delimiters-mode) (add-hook 'lisp-mode-hook 'rainbow-delimiters-mode) (add-hook 'scheme-mode-hook 'rainbow-delimiters-mode) (add-hook 'emacs-lisp-mode-hook 'rainbow-delimiters-mode) ;; Only enable aggressive indent on lisp-likes (add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode) (add-hook 'lisp-mode-hook #'aggressive-indent-mode) (add-hook 'scheme-mode-hook #'aggressive-indent-mode) (add-hook 'clojure-mode-hook #'aggressive-indent-mode) ;; 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"))