I want to put together a standard environment for exploring Clojure with Emacs. Has anyone got a recipe that would suit this? I\'m thinking of a Vagrant system running a flavour
vagrant box add preciseMinimal http://goo.gl/wxdwM
Change to Clojure vagrant base folder
vagrant init preciseMinimal
vagrant up
vagrant ssh
or ssh to 127.0.0.1 port 2222 (or other port mentioned in "vagrant up" output)
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:cassou/emacs
sudo apt-get update
sudo apt-get install emacs24 emacs24-el emacs24-common-non-dfsg
sudo apt-get install clojure
cd ~/
mkdir bin
sed '$ a\
export PATH=~/bin:$PATH' ~/.bashrc
exit and reconnect to ssh
cd ~/bin
wget https://raw.github.com/technomancy/leiningen/preview/bin/lein
chmod +x lein
./lein
cd ~
cat >.emacs
; Package.el customization
(package-initialize)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
;; install packages
(defvar my-packages '(
auto-complete
clojure-mode
clojure-test-mode
nrepl
ac-nrepl
paredit
rainbow-delimiters
))
(dolist (p my-packages)
(when (not (package-installed-p p))
(package-refresh-contents)
(package-install p)))
;; The following line can be removed after first install to speed up startup
(byte-recompile-directory (expand-file-name "~/.emacs.d") 0)
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(auto-save-default nil)
'(backup-inhibited t t)
'(cursor-type 'bar t)
'(column-number-mode t)
'(delete-selection-mode t)
'(inhibit-startup-screen t)
'(initial-scratch-message nil)
'(tool-bar-mode nil)
'(xterm-mouse-mode 1))
;; rainbow delimiters
(require 'rainbow-delimiters)
(global-rainbow-delimiters-mode)
;; paredit
(add-hook 'clojure-mode-hook 'paredit-mode)
(add-hook 'nrepl-mode-hook 'paredit-mode)
(global-set-key [f7] 'paredit-mode)
;; clojure-mode
(global-set-key [f9] 'nrepl-jack-in)
;; nrepl
(add-hook 'nrepl-interaction-mode-hook 'nrepl-turn-on-eldoc-mode)
(setq nrepl-popup-stacktraces nil)
(add-to-list 'same-window-buffer-names "*nrepl*")
(add-hook 'nrepl-mode-hook 'paredit-mode)
;; Auto complete
(require 'auto-complete-config)
(ac-config-default)
(define-key ac-completing-map "\M-/" 'ac-stop)
;; ac-nrepl
(require 'ac-nrepl)
(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
(eval-after-load "auto-complete" '(add-to-list 'ac-modes 'nrepl-mode))
#CTRL-D to finish
Grateful attributions: http://blog.worldcognition.com/2012/07/setting-up-emacs-for-clojure-programming.html
A Github hosted, shell provisioned vagrant setup is located here:
https://github.com/pattinsont/Ukelele
All that should be required is a checkout and vagrant up.
Once the VM is up, ssh onto box. Run emacs to complete install. Then M-x cider-jack-in