2010/7/5 Lee Spector <lspec...@hampshire.edu>: > > On Jul 4, 2010, at 6:46 PM, Laurent PETIT wrote: >> >> I guess I could make the Tab-as-indent-line behavior go back to the >> default mode, and introduce the >> Esc.-as-no-interpretation-by-the-editor-for-the-nex-keystroke . So >> people wanting to insert a real tab could do it by first hitting the >> Esc. key first. > > From where I currently sit that would be quite helpful. > >> Maybe you're not "embracing" the source-code as data to its full >> extent ? I was not -and still am not- an emacs/paredit.el user, but >> now I can't go back to the default mode. I'm thinking about my code >> more and more in terms of forms, not in terms of a begin-to-end flow >> of characters. Just to give you a powerful example : [deleted] > > I find this a little funny because my unshared reaction to the recent > discussion about "The Lisp Way" in the thread on "the joys of lisp" thread > was that for me the Lisp Way is mostly about source-code as data (aka > homoiconicity). From macros to genetic programming (one of my research areas) > homoiconicity is core to my view of Lisp and of the way that I wish all > programming languages work. So I embrace it! > > I think what I don't embrace (yet -- maybe I'll come around) are the way that > the the current implementation interacts with typing, the way it prevents you > from sketching out code in a structurally invalid way (which is sometimes the > way my mind works), and the way that knowledge of how it's going to react to > typing is necessary to type anything correctly. You have to be thinking about > its rules as well as about the code. Of course once you internalize the rules > then I can see it would be great, but the interaction with ordinary typing > and the initial "opacity" of the system's rules aren't so great IMHO. > > My favorite Lisp editing environment ever, although I probably misremember it > because I haven't seen it for something like 25 years, was the Interlisp-D > environment on Xerox Dandelion machines. I wish I could find some screen > snaps online, but I haven't yet. In any event, it was based around the > concept of structure editing but I don't recall it interfering with typing or > that I had to predict its behavior or move around things that it typed, etc. > That really might be flaws in my memory (anyone else here work with those)? > In any event I am SURE there were structure-oriented buttons that you could > click to add parentheses and do other handy structure editing things. As I > recall it this made it relatively easy to do the kinds of things that you > illustrate with your example, but no memorization of key stroke combinations > was required and ordinary meanings of common keys (like "(") weren't > overridden. > > At least that's how I recall it, although it may be a mangled memory. In any > event, maybe I can grow to love the CCW approach to this but FWIW my issue > isn't about "source code as data," it's about the mechanics of the user > interface. > > One other cool thing that I remember about the Interlisp-D code editor, btw, > is that it maintained two selections -- the most recent one and the one from > before that, with the most recent underlined and the 2nd most recent > underlined with a dotted line -- and there were some button-based editing > functions that worked with this. For example, with one click you'd swap the > two selected expressions, and I think there were others. >
Sorry if I offensed you by suggesting you didn't "get" the virtues of homoïconicity ! I would love to hear details on what a good structure editor (not just a semi-editor like paredit) looks like ! >>>> Oh, this for sure is a bug ! Lau Jensen opened an issue for it [etc] >>> Great! >> >> btw, now fixed in my local branch ! > > Wonderful! > >>> There will be an interaction between this and the automatic insertion. If >>> you get rid of automatic insertion (which I would prefer) then if the I >>> type "(defn foo" and hit return then the parentheses will be unbalanced >>> (globally), so unless this issue is resolved the next line couldn't be >>> indented at all. That wouldn't be very helpful. >> >> Sincerely, I'll make everything in my power to get it back. > > Wonderful! > >> In fact - but maybe I'm saying that because "it's my baby and I'm used >> to his strengths and weaknesses" :-) -, when in Strict mode, I don't >> see the {, (, ", [ keys as characters anymore: they are commands for >> structurally editing the code: ( means create a new block, not add the >> ( character. ) means jump to the end of the ancestor ) (not >> necessarily the parent form). Maybe "switching" perspective to this >> angle may help. But I can understand that it may resemble "dark >> magic", so maybe explaining it a little bit more may help. > > > That makes sense, and that may be the best way to explain it. (For example > "In the Strict mode several keys that would ordinarily produce characters are > instead treated as commands for structurally editing the code..."). > BTW, if you feel like you could help improve the documentation of some parts of ccw on the wiki or the Eclipse online help, you're very welcome :-) -- 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