aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--emacs/.emacs.d/init.org87
-rw-r--r--emacs/.emacs.d/site-lisp/oni-clojure.el44
2 files changed, 131 insertions, 0 deletions
diff --git a/emacs/.emacs.d/init.org b/emacs/.emacs.d/init.org
index 13f18fd..b440c06 100644
--- a/emacs/.emacs.d/init.org
+++ b/emacs/.emacs.d/init.org
@@ -701,6 +701,93 @@ To start off, first I need to enable lexical binding.
(add-hook 'css-mode-hook 'electric-indent-local-mode)
#+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
** Magit
diff --git a/emacs/.emacs.d/site-lisp/oni-clojure.el b/emacs/.emacs.d/site-lisp/oni-clojure.el
new file mode 100644
index 0000000..c739de5
--- /dev/null
+++ b/emacs/.emacs.d/site-lisp/oni-clojure.el
@@ -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