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.
>>> 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...").
Thanks so much,
-Lee
--
Lee Spector, Professor of Computer Science
School of Cognitive Science, Hampshire College
893 West Street, Amherst, MA 01002-3359
[email protected], http://hampshire.edu/lspector/
Phone: 413-559-5352, Fax: 413-559-5438
Check out Genetic Programming and Evolvable Machines:
http://www.springer.com/10710 - http://gpemjournal.blogspot.com/
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en