Skip to content

Highlighting, indentation, and subprocess support for the Clojure language

Notifications You must be signed in to change notification settings

amalloy/clojure-mode

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clojure Mode

Provides Emacs font-lock, indentation, and navigation for the Clojure language.

Installation

Unfortunately, the version on ELPA is outdated as of now. You can do a manual install by downloading clojure-mode.el and placing it in the ~/.emacs.d/ directory, creating it if it doesn't exist. Then add this to the file ~/.emacs.d/init.el:

(add-to-list 'load-path "~/.emacs.d/")
(require 'clojure-mode)

Marmalade

The version on Marmalade is up-to-date. If you use package.el but haven't added Marmalade, the community package source, yet, add this to ~/.emacs.d/init.el:

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)

Then do this to load the package listing:

  • M-x eval-buffer
  • M-x package-refresh-contents

If you use a version of Emacs prior to 24 that doesn't include package.el, you can get it from http://bit.ly/pkg-el23. If you have an older package.el installed from tromey.com, you should upgrade in order to support installation from multiple sources.

Clojure Test Mode

This source repository also includes clojure-test-mode.el, which provides support for running Clojure tests (using the clojure.test framework) via SLIME and seeing feedback in the test buffer about which tests failed or errored. The installation instructions above should work for clojure-test-mode as well.

Once you have a SLIME session active (see below), you can run the tests in the current buffer with C-c C-,. Failing tests and errors will be highlighted using overlays. To clear the overlays, use C-c k.

You can jump between implementation and test files with C-c t if your project is laid out in a way that clojure-test-mode expects. Your project root should have a src/ directory containing files that correspond to their namespace. It should also have a test/ directory containing files that correspond to their namespace, and the test namespaces should mirror the implementation namespaces with the addition of "test" as the second-to-last segment of the namespace.

So my.project.frob would be found in src/my/project/frob.clj and its tests would be in test/my/project/test/frob.clj in the my.project.test.frob namespace.

Paredit

Using clojure-mode with paredit is highly recommended. It is also available using package.el from the above archive.

Use paredit as you normally would with any other mode; for instance:

;; (require 'paredit) if you didn't install via package.el
(defun turn-on-paredit () (paredit-mode 1))
(add-hook 'clojure-mode-hook 'turn-on-paredit)

Basic REPL

Use M-x run-lisp to open a simple REPL subprocess using Leiningen. Once that has opened, you can use C-c C-r to evaluate the region or C-c C-l to load the whole file.

If you don't use Leiningen, you can set inferior-lisp-program to a different REPL command.

SLIME

You can also use Leiningen to start an enhanced REPL via SLIME:

$ lein plugin install swank-clojure 1.3.3

M-x clojure-jack-in # from inside a project

License

Copyright © 2007-2011 Jeffrey Chu, Lennart Staflin, Phil Hagelberg

Distributed under the GNU General Public License; see C-h t to view.

About

Highlighting, indentation, and subprocess support for the Clojure language

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Emacs Lisp 97.3%
  • Clojure 2.7%