OK, I've released paredit.clj in clojars. I've also documented the github project, please start from there:
https://github.com/laurentpetit/paredit.clj Please one word: paredit.clj internals may change in future versions. Consider this currently as a "black box" tool. (I've not had time to work on textmash recently, but the README on the project gives, IMHO, enough instructions to be able to use paredit.clj) Cheers, -- Laurent 2011/1/20 Jeff Rose <ros...@gmail.com>: > I'd also be interested in clojure paredit as a library. We've been > talking about having a stripped down editor for defining synthesizers > and musical processes inside of Overtone, so some tools to get a > useful little Clojure editing window would be great. > > -Jeff > > On Jan 19, 10:44 am, Laurent PETIT <laurent.pe...@gmail.com> wrote: >> Hello, >> >> 2011/1/18 Olek <aleksander.nas...@gmail.com> >> >> > Hi, >> >> > Here is a link:http://code.google.com/p/textmash/ >> >> > Some time ago I have written it in order to help accomplish a task of >> > creating some paraller processing system written entirely in Clojure >> > (it was the map reduce framework from Google). >> >> > It was also used with success in other tasks, like editing PHP pages, >> > Clojure learning, writing small programs in Clojure and some simple >> > text processing. >> >> > Feel free to contribute in bug fixing and improving or maybe even >> > rewriting it in Clojure (there are not too much lines of code). >> >> There's a "task" I have in my todo list since a long time, which is to >> extract more of ccw "structural editing" and "clojure source code grammar >> parser" into external projects. >> >> Currently, "structural editing" in ccw is already totally decoupled from >> Eclipse, or even any graphical toolkit (Swing / SWT). The only dependencies >> of the "clojure grammar definition+parsley parser+structural edition >> a-la-paredit commands" are clojure and clojure-contrib. >> >> If you're interested, I could reprioritize this task and put it near the top >> of my todo list. >> >> As an example, calling a "paredit.clj" command looks like this: call a >> multimethod named paredit.core/paredit: >> >> * call the parser to get a parsetree. Note that the parsetree follows >> clojure.xml format. >> * give the parsetree to the paredit command, along with the command name >> and the state of the editor (plain textual content, cursor position, >> selection length). As a result you'll get a set of text changes to apply to >> the source code in the form of a list of maps representing deltas: {:keys >> [offset length text]} (in the original source code, replace the range >> [offset (+ offset length)[ with text to effectively apply the paredit >> command you invoked) >> >> in code (pseudo-code, not my dev environment at hand), this would look like >> with the current shape of the code/namespaces: >> >> ;; how would we invoke "raise over sexp" to get "(spy foo)" transformed into >> "foo" with the cursor before "f" char and no current selection >> (require '[paredit.parser :as p] '[paredit.core :as s]) >> (let [original-code "(spy foo)" >> parsetree (p/parse original-code) >> raise-over-delta (s/paredit :paredit-raise-sexp parsetree {:text >> original-code :offset 5 :length 0})] >> raise-over-delta) >> => {:text "(spy foo)" :offset 5 :length 0 :modifs [ {:text "foo" :offset 0 >> :length 9} ]} >> >> HTH, >> >> -- >> Laurent >> >> >> >> >> >> >> >> >> >> > The main idea is to take what is best in Eclipse, NetBeans and >> > ergonomy of Mac OS and put into light tool. >> > I hope you will enjoy it. >> >> > Bye! >> >> > -- >> > 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<clojure%2bunsubscr...@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 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 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