An online novel about the Source, the Force, the real life and everything in between...


CIDER 0.9 is finally out and it’s our best release yet (believe it or not)! It took a lot more time than I originally anticipated, but at least we managed to ship in time for EuroClojure!

There are a ton of important changes and new features in 0.9 and now I’ll go quickly through some of them.


Believe it or not CIDER now has a debugger! This was like the most requested feature ever, so I’m sure at least some of you are excited. The debugger was developed by the awesome Artur Malabarba. He even wrote a post about it and I guess you should read it.

Dependency isolation

CIDER’s dependencies will no longer affect your projects (read this as introduce dependency conflicts in them). All the dependencies are now isolated using source rewriting (simply put – they live in different namespaces than the original libraries). This magic is done by mranderson. Thanks to Benedek Fazekas for creating this small but super helpful tool!

Rich code completion

Completion candidates are now annotated with information about the namespace and the type of the thing being completed. It’s pretty neat.

The screenshot above features company-mode. The annotations are not supported in auto-complete-mode (that’s a limitation of AC, not a limitation of CIDER).

Misc additions

Here’s a short list of other important additions:

  • Support for Piggieback 0.2
  • New code formatting commands (based on cljfmt)
  • New EDN data formatting commands


There were also a few important changes. Most notably we had to kill source-tracking code evaluation, as it wasn’t playing nice with ClojureScript. This was also a hacky solution and I still hope than one day this will be properly supported in nREPL itself. In simple terms – var definitions evaluated by themselves won’t have any location metadata set for them, which will make it impossible to go their definition. You can also help out by voicing your support for this nREPL ticket’s patch to be merged.

You’ll also notice that some commands that didn’t prompt for confirmation in the past do so now (e.g. find-var). This was done mostly for consistency with Emacs’s own commands that do similar things. The behavior is configurable via cider-prompt-for-symbol. If a ton of people dislike the new defaults reverting them is on the table.

All the Gory Details

There were truly a ton of changes and there’s little point in me repeating them here. If you want to know everything have a look at the release notes.

The Road Ahead

Going forward our top priority will be merging some functionality from refactor-nrepl and clj-refactor into CIDER itself. Think of things like find-usages, extract-definition, etc. Refining the debugger will be another top priority.

We’ll also try to do some important internal changes:

Depending of how well we progress on those tasks the next release will be either 0.10 or 1.0. I won’t make any commitments about its release date (but judging from past it will likely be 3 to 6 months from now).

If you’re wondering why things are moving more slowly lately, here’s the answer for you – I’ve been super busy since the beginning of the year and haven’t had much time for open-source projects. I’m hoping this will change, but only time will tell. I’m very happy that a lot of people contributed to the development of CIDER 0.9. The project definitely doesn’t have a bus factor of one. :–)

Special thanks to Michael Griffiths who did a ton of great work on this release. You rock!

P.S. Recently I talked on the Cognicast about CIDER (in general and 0.9 in particular). You might find this episode interesting.

P.P.S. I’m rarely on IRC these days. #cider on slack and our gitter channel are the official CIDER chats as far as I’m concerned.

Projectile 0.12 Released

Projectile 0.12 is finally out!

A lot of time has passed since the previous stable release, for which I’m truly sorry. I kept delaying and delaying the release for various reasons, but it’s finally here and it’s pretty big. Please, consult the CHANGELOG for some of the more interesting changes. Note that some changes and new features are totally undocumented, as I haven’t been as demanding to contributors as I’m usually on my other projects (meaning I didn’t ask everyone to update the changelog or the readme).

It’s funny how open-source works – I never expected that Projectile would have any users except me, but today it’s one of the most popular 3rd party Emacs extensions. Unfortunately I’m involved with many other projects and have a pretty demanding day job, so issues and feature requests have been piling up lately. 80 open issues – that’s depressing! I guess I’m a pretty lame maintainer! :–)

If you like the project, I’d appreciate your assistance to bring their number down. Many of the requests are relatively easy to implement, some don’t make sense and should be simply closed (or might have been fixed accidentally). Same goes for the open PRs.

Alternatively, you can support Projectile’s continued development via gratipay or PayPal.

Support via Gratipay


That’s all for me now, folks! I’ll try to deliver stable releases faster in the future, but I won’t make any promises. Thanks for all your help and support! I really appreciate them!

P.S. I’d love for Projectile to have a cool logo. Maybe someone can help out with that as well?

Octopress 3.0

Can’t wait for Octopress 3.0 to be released! Octopress 2 is killing me and I was seriously considering going back to a plain Jekyll blog, before I saw 3.0 is right around the corner.

Any day now…

Introducing Inf-clojure - a Better Basic Clojure REPL for Emacs

At Clojure/conj I had the chance to shake Rich Hickey’s hand and exchange a few words with him. When I asked him whether he currently uses CIDER or Cursive for Clojure development he replied that he preferred a simpler solution – clojure-mode & inferior-lisp-mode. I was a bit surprised because clojure-mode’s integration with inferior-lisp-mode sucks (big time). It has always been extremely limited and was never really improved/extended. It has no Clojure specific features and no code completion. I felt that Rich and all the people using inferior-lisp-mode deserved something better, so I quickly put together inf-clojure.

inf-clojure provides some Clojure specific features like showing a var’s doc or source, derives some core functionality from clojure-mode and even features basic code-completion (and company-mode support). That’s not much admittedly, but it’s a good start. Extending inf-clojure is super easy and I expect that we’ll add a bit more features to it along the way (e.g. macroexpansion).

inf-clojure is available in MELPA and will eventually replace completely inferior-lisp-mode when clojure-mode 4.0 is released.

Keep in mind that inf-clojure is nothing like CIDER and will never be. CIDER will always be the powertool for Clojure programming in Emacs. I do understand, however, that some people are overwhelmed by CIDER and some people simply don’t need anything sophisticated. I hope they’ll enjoy inf-clojure!

A CIDER Unsession at Clojure/conj

I’ll be talking about the evolution of CIDER at the conj, but I won’t be able to show much (in terms of features) during my talk. Luckily, however, beside the talks we also have the option for unsessions. Here’s my proposal for one such unsession…

I’d like to do a more extensive demonstration of the general workflow with CIDER and all the cool things we’ve done recently and I’d also like discuss with our users (and potential users) existing problems, ideas for improvements and the future direction of the project. If you like my idea you can show your support for it here.

Feedback is important and I’d like to get as much as possible to make CIDER better!