# this is a Clojure-friendly emacs config If you're new to emacs, check out [this introductory tutorial](http://www.braveclojure.com/basic-emacs/)! ## Installing 1. Close Emacs. 2. Delete `~/.emacs` or `~/.emacs.d` if they exist. (Windows users, your emacs files will probably live in `C:\Users\your_user_name\AppData\Roaming\`. So, for example, you would delete `C:\Users\jason\AppData\Roaming\.emacs.d`.) This is where Emacs looks for configuration files, and deleting these files and directories will ensure that you start with a clean slate. 3. Download the Emacs [configuration zip file](https://github.com/flyingmachine/emacs-for-clojure/archive/book1.zip) and unzip it. Its contents should be a folder, `emacs-for-clojure-book1`. Run `mv path/to/emacs-for-clojure-book1 ~/.emacs.d`. Then open Emacs. ## Upgrading Before upgrading, ensure that your `.emacs.d` directory is under version control so that you can always revert to a known good state. To upgrade: 1. Edit `.emacs.d/init.el`, adding these lines after line 12: ```elisp (add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t) (add-to-list 'package-pinned-packages '(cider . "melpa-stable") t) ``` 2. Close Emacs. 3. Run `rm -Rf .emacs.d/elpa/cider-*` 4. Open Emacs. You'll probably see some errors and your theme won't load. That's ok. 5. In Emacs, run `M-x package-refresh contents`. 6. In Emacs, run `M-x package-install cider`. 7. Close and re-open Emacs. That should install the latest version. Enjoy! ## Organization I've tried to separate everything logically and document the purpose of every line. [`init.el`](./init.el) acts as a kind of table of contents. It's a good idea to eventually go through `init.el` and the files under the `customizations` directory so that you know exactly what's going on. ## Supporting CSS, HTML, JS, etc. Emacs has decent support for CSS, HTML, JS, and many other file types out of the box, but if you want better support, then have a look at [my personal emacs config's init.el](https://github.com/flyingmachine/emacs.d/blob/master/init.el). It's meant to read as a table of contents. The emacs.d as a whole adds the following: * [Customizes js-mode and html editing](https://github.com/flyingmachine/emacs.d/blob/master/customizations/setup-js.el) * Sets indentation level to 2 spaces for JS * enables subword-mode so that M-f and M-b break on capitalization changes * Uses `tagedit` to give you paredit-like functionality when editing html * adds support for coffee mode * [Uses enh-ruby-mode for ruby editing](https://github.com/flyingmachine/emacs.d/blob/master/customizations/setup-ruby.el). enh-ruby-mode is a little nicer than the built-in ruby-mode, in my opinion. * Associates many filenames and extensions with enh-ruby-mode (.rb, .rake, Rakefile, etc) * Adds keybindings for running specs * Adds support for YAML and SCSS using the yaml-mode and scss-mode packages In general, if you want to add support for a language then you should be able to find good instructions for it through Google. Most of the time, you'll just need to install the "x-lang-mode" package for it.