Add clojure and cider configuration

This commit is contained in:
Tom Willemse 2016-09-28 00:01:26 +02:00
parent ed7cd3dc4a
commit c6f43c514b
2 changed files with 131 additions and 0 deletions

View file

@ -701,6 +701,93 @@ To start off, first I need to enable lexical binding.
(add-hook 'css-mode-hook 'electric-indent-local-mode) (add-hook 'css-mode-hook 'electric-indent-local-mode)
#+END_SRC #+END_SRC
** Clojure mode
#+BEGIN_SRC emacs-lisp
(ensure-library clojure-mode)
#+END_SRC
Install extra font-locking for clojure.
#+BEGIN_SRC emacs-lisp
(ensure-library clojure-mode-extra-font-locking)
(with-eval-after-load 'clojure-mode
(require 'clojure-mode-extra-font-locking))
#+END_SRC
Enable paredit mode.
#+BEGIN_SRC emacs-lisp
(add-hook 'clojure-mode-hook 'paredit-mode)
#+END_SRC
Use the clojure repl as the inferior lisp mode.
#+BEGIN_SRC emacs-lisp
(eval-when-compile (require 'inf-lisp))
(defun oni:clojure-set-inferior-lisp ()
(setq inferior-lisp-program "lein repl"))
#+END_SRC
Add a little more font locking still, and some indentation. This is
included in the Clojure for the Brave and True configuration.
#+BEGIN_SRC emacs-lisp
(add-hook 'clojure-mode-hook 'oni-clojure-add-font-lock)
(add-hook 'clojure-mode-hook 'oni-clojure-add-indent)
#+END_SRC
** Cider mode
Cider is like Slime for Common Lisp. This configuration is copied
from the one provided by Clojure for the Brave and True.
#+BEGIN_SRC emacs-lisp
(ensure-library cider)
#+END_SRC
Provides minibuffer documentation for the code you're typing into
the repl.
#+BEGIN_SRC emacs-lisp
(add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode)
#+END_SRC
Go right to the REPL buffer when it's finished connecting
#+BEGIN_SRC emacs-lisp
(with-eval-after-load 'cider
(setq cider-repl-pop-to-buffer-on-connect t))
#+END_SRC
When there's a cider error, show its buffer and switch to it.
#+BEGIN_SRC emacs-lisp
(setq cider-show-error-buffer t
cider-auto-select-error-buffer t)
#+END_SRC
Where to store the cider history.
#+BEGIN_SRC emacs-lisp
(setq cider-repl-history-file
(oni:data-location "cider-history"))
#+END_SRC
Wrap when navigating history.
#+BEGIN_SRC emacs-lisp
(setq cider-repl-wrap-history t)
#+END_SRC
Enable paredit in your REPL.
#+BEGIN_SRC emacs-lisp
(add-hook 'cider-repl-mode-hook 'paredit-mode)
#+END_SRC
* Applications * Applications
** Magit ** Magit

View file

@ -0,0 +1,44 @@
;;; oni-clojure.el --- Extra commands and functions for clojure-mode -*- lexical-binding: t; -*-
;; Copyright (C) 2016 Tom Willemse
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords:
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;
;;; Code:
(require 'clojure-mode)
;;;###autoload
(defun oni-clojure-add-font-lock ()
(font-lock-add-keywords
nil
'(("(\\(facts?\\)"
(1 font-lock-keyword-face))
("(\\(background?\\)"
(1 font-lock-keyword-face)))))
;;;###autoload
(defun oni-clojure-add-indent ()
(define-clojure-indent (fact 1))
(define-clojure-indent (facts 1)))
(provide 'oni-clojure)
;;; oni-clojure.el ends here