OK.

Concerning the specific "indent line" issue, I guess I'll finally do
the following :
  * align the default way of re-indenting a line with the Eclipse
standard, e.g. Ctrl+I on Windows/Linux (what is it for Mac ?)
    * this way this can be overriden by the user via the Window >
Preferences > General > Keys menu
    * but (there's a but), it's not possible in Eclipse to redefine
the behaviour of the Tab key from the above mentioned menu, so:
  * create a configuration flag for the behaviour of the Tab key.
    * Make this behaviour orthogonal to the currently enabled
structural editing mode (Default or Strict)
    * Make the default behaviour be the reindentation of the current line
    * The flag will be accessible as usual from Window > Preferences >
Clojure > Editor menu

2010/7/5 Laurent PETIT <laurent.pe...@gmail.com>:
> 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

Reply via email to