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.

Reply via email to