Emacs has plenty of power here. My preferred Clojure workflow actually involves evaluating Clojure code in a buffer rather than directly at the REPL (so you don't have to do any copy/pasting to edit the code and eval it again). It's easy to build up complex functions piecewise this way.