Hi Magnar, I've been using this library for maybe a month. The refactorings I use by far the most are renaming files, and threading/unthreading. Thanks for your work on this.
On Mon, Dec 30, 2013 at 7:52 AM, Magnar Sveen <magn...@gmail.com> wrote: > clj-refactor.el <https://github.com/magnars/clj-refactor.el> provides a > set of simple refactorings for Clojure in Emacs. It doesn't tackle the hard > problems, like cross-namespace renaming. Instead it gives you a little > quality of life while we're waiting. > <https://gist.github.com/magnars/51ccab2b478d97b9aa17#thread--unwind>Thread > / unwind > > Given this: > > (map square (filter even? [1 2 3 4 5])) > > Start by wrapping it in a threading macro: > > (->> (map square (filter even? [1 2 3 4 5]))) > > And start threading away, using cljr-thread: > > (->> (filter even? [1 2 3 4 5]) > (map square)) > > And again: > > (->> [1 2 3 4 5] > (filter even?) > (map square)) > > To revert this, there's cljr-unwind. Just read the examples in the other > direction. > > <https://gist.github.com/magnars/51ccab2b478d97b9aa17#introduce--expand-let>Introduce > / expand let > > Given this: > > (defn handle-request > {:status 200 > :body (find-body abc)}) > > With the cursor in front of (find-body abc), I do cljr-introduce-let: > > (defn handle-request > {:status 200 > :body (let [X (find-body abc)] > X)}) > > Now I have two cursors where the Xes are. Just type out the name, and > press enter. Of course, that's not where I wanted the let statement. So I > do cljr-expand-let: > > (defn handle-request > (let [body (find-body abc)] > {:status 200 > :body body})) > > Yay. > > <https://gist.github.com/magnars/51ccab2b478d97b9aa17#automatic-insertion-of-namespace-declaration>Automatic > insertion of namespace declaration > > When you open a blank .clj-file, clj-refactor inserts the namespace > declaration for you. > > It will also add the relevant :use clauses in test files, normally using > clojure.test, but if you're depending on midje in your project.clj it > uses that instead. > <https://gist.github.com/magnars/51ccab2b478d97b9aa17#more-stuff>More > stuff > > - When you rename a file, it will update the ns-declaration and then > query-replace new ns in project. > - You can add :require and :import to the ns, and when you're done it > jumps back to where you were. > > <https://gist.github.com/magnars/51ccab2b478d97b9aa17#in-summary>In > summary > > This isn't the big refactoring lib that we're all waiting for. That would > require connecting to nREPL, analyzing ASTs, expanding macros, and a whole > lot of other problems. > > Instead it adds a few helpful functions that are available right now. > > And if you want to contribute, and maybe grow this into the refactorer's > dream - do let me know. I'm all for that. :-) > > - Magnar > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.