84 lines
2.5 KiB
EmacsLisp
84 lines
2.5 KiB
EmacsLisp
;;;;
|
|
;; Clojure
|
|
;;;;
|
|
|
|
;; Enable paredit for Clojure
|
|
(add-hook 'clojure-mode-hook 'enable-paredit-mode)
|
|
|
|
;; This is useful for working with camel-case tokens, like names of
|
|
;; Java classes (e.g. JavaClassName)
|
|
(add-hook 'clojure-mode-hook 'subword-mode)
|
|
|
|
;; A little more syntax highlighting
|
|
(require 'clojure-mode-extra-font-locking)
|
|
|
|
;; syntax hilighting for midje
|
|
(add-hook 'clojure-mode-hook
|
|
(lambda ()
|
|
(setq inferior-lisp-program "lein repl")
|
|
(font-lock-add-keywords
|
|
nil
|
|
'(("(\\(facts?\\)"
|
|
(1 font-lock-keyword-face))
|
|
("(\\(background?\\)"
|
|
(1 font-lock-keyword-face))))
|
|
(define-clojure-indent (fact 1))
|
|
(define-clojure-indent (facts 1))
|
|
(rainbow-delimiters-mode)))
|
|
|
|
;;;;
|
|
;; Cider
|
|
;;;;
|
|
|
|
;; provides minibuffer documentation for the code you're typing into the repl
|
|
(add-hook 'cider-mode-hook 'eldoc-mode)
|
|
|
|
;; go right to the REPL buffer when it's finished connecting
|
|
(setq cider-repl-pop-to-buffer-on-connect t)
|
|
|
|
;; When there's a cider error, show its buffer and switch to it
|
|
(setq cider-show-error-buffer t)
|
|
(setq cider-auto-select-error-buffer t)
|
|
|
|
;; Where to store the cider history.
|
|
(setq cider-repl-history-file "~/.emacs.d/cider-history")
|
|
|
|
;; Wrap when navigating history.
|
|
(setq cider-repl-wrap-history t)
|
|
|
|
;; enable paredit in your REPL
|
|
(add-hook 'cider-repl-mode-hook 'paredit-mode)
|
|
|
|
;; Use clojure mode for other extensions
|
|
(add-to-list 'auto-mode-alist '("\\.edn$" . clojure-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.boot$" . clojure-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.cljs.*$" . clojure-mode))
|
|
(add-to-list 'auto-mode-alist '("lein-env" . enh-ruby-mode))
|
|
|
|
|
|
;; key bindings
|
|
;; these help me out with the way I usually develop web apps
|
|
(defun cider-start-http-server ()
|
|
(interactive)
|
|
(cider-load-current-buffer)
|
|
(let ((ns (cider-current-ns)))
|
|
(cider-repl-set-ns ns)
|
|
(cider-interactive-eval (format "(println '(def server (%s/start))) (println 'server)" ns))
|
|
(cider-interactive-eval (format "(def server (%s/start)) (println server)" ns))))
|
|
|
|
|
|
(defun cider-refresh ()
|
|
(interactive)
|
|
(cider-interactive-eval (format "(user/reset)")))
|
|
|
|
(defun cider-user-ns ()
|
|
(interactive)
|
|
(cider-repl-set-ns "user"))
|
|
|
|
(eval-after-load 'cider
|
|
'(progn
|
|
(define-key clojure-mode-map (kbd "C-c C-v") 'cider-start-http-server)
|
|
(define-key clojure-mode-map (kbd "C-M-r") 'cider-refresh)
|
|
(define-key clojure-mode-map (kbd "C-c u") 'cider-user-ns)
|
|
(define-key cider-mode-map (kbd "C-c u") 'cider-user-ns)))
|