Ultra
Hey, you know who has two thumbs and strong opinions? That's right, it's me.
Ultra is a Leiningen plugin for an absolutely kick-ass development environment.
I've written a blog post describing Ultra in greater depth here.
Installation
To install and configure Ultra, add something like the following to your ~/.lein/profiles.clj
{:user {:plugins [[venantius/ultra "0.3.3"]]
:ultra {:color-scheme :solarized_dark}}}
Requirements
Colorized nREPL output requires Leiningen version 2.4.2 or higher.
The plugin at large needs JDK 7+.
ClojureScript Support
At the moment, Ultra doesn't have ClojureScript support at the REPL. See brandonbloom/fipp#7.
Features
For a detailed list of features, check out the wiki. Here's the highlight reel:
Configuration
All of the above features are enabled by default, but can be turned off by setting a false
flag in your profile. If you wanted Ultra to essentially no-op, your profile would look like this:
{:user {:plugins [[venantius/ultra "0.3.3"]]
:ultra {:repl false
:stacktraces false
:tests false
:java false}}}
Color schemes
At the moment Ultra supports the following color schemes:
:solarized_dark
:default
If you want to set the colors yourself instead of using a theme you can configure them directly, e.g.:
{:user {:plugins [[venantius/ultra "0.3.3"]]
:ultra {:color-scheme {:delimiter [:red]
:tag [:red]
:nil [:cyan]
:boolean [:cyan]
:number [:cyan]
:string [:cyan]
:character [:cyan]
:keyword [:green]
:symbol nil
:function-symbol [:blue]
:class-delimiter [:blue]
:class-name nil
:exception nil}}}}
Contributing
Please open an issue here before submitting pull requests; I prefer to have documentation and consensus that either of our time will be well spent by working on it. When opening an issue -- particularly for bugs -- please refer to CONTRIBUTING.md
Bug fixes and code cleanup are always appreciated and won't get too much pushback; new features will be held to a higher standard - this whole project is something of a massive exercise in ego, after all.
Pull Requests for new color schemes welcome; please include screenshots in your submission.
Motivation
...or, why didn't you just put all of this stuff in your ~/.lein/profiles.clj
?
In short, my :user
profile was starting to become bloated. It was difficult to tell whether plugins were interfering with each other, and my :injections
key in particular was starting to look a little unwieldy.
At some point I realized I was up to my neck in alligators and that it was time to push things into a standalone repository.
Special Thanks
Ultra wraps, calls, or draws inspiration from the following libraries, and their owners and authors deserve credit for doing most of the hard work.
- AvisoNovate/pretty - Better exceptions
- brentonashworth/lein-difftest - Lein-difftest - test diffs using difform
- greglook/puget - Colorized pretty-printing
- greglook/whidbey - Puget nREPL middleware
- jaycfields/expectations - The Expectations testing library
- pjstadig/humane-test-output - Diffs in tests using clojure.test
- zcaudate/hara - General purpose clojure utility library
- zcaudate/vinyasa - Give your Clojure workflow more flow
License
In some cases, I've borrowed code snippets from libraries above and re-written them. Where that is the case, the Copyright of the original author[s] remains in effect. Any modifications to their code, as well as all original content, is Copyright © 2015 W. David Jarvis.
Distributed under the Eclipse Public License 1.0, the same as Clojure.