Hi,

blais is not talking 'bout openings, but closings.

When you have this (the pipe symbol for the cursor position) :

(def | foo [bar baz] (hello ) )

If you type

)

You will have with paredit the cursor which jumps after the last closing
paren, instead of just inserting this damn closing paren you wanted (it may
not make sense for paredit, but maybe it makes sense for the typer : he's
not in full control anymore).


2010/9/27 CuppoJava <patrickli_2...@hotmail.com>

> I'm curious what you don't like about the automatic insertion scheme
> that you talked about. I'm using Parenedit with emacs and I'm quite
> happy with it. I think the scheme is quite simple... whenever you type
> '(', it inserts ')'. Similarly with '[' and '{'.
>  -Patrick
>
> On Sep 26, 7:51 pm, blais <bl...@furius.ca> wrote:
> > Hi,
> >
> > Writing Clojure code tends to require a larger mix of "()",
> > "[]" and "{}" characters than other LISPs I use. This
> > sometimes makes it a bit tiring to write those balanced
> > expressions.
> >
> > Writing balanced expressions has been addressed in editors
> > mainly by providing the automated insertion of matching
> > characters when you type an opening character. This kind of
> > support usually also comes with a fancy overloading of the
> > default insertion behaviour of those characters to
> > automatically skip extraneous ones, locking you into keeping
> > everything balanced all the time; I find this extremely
> > distracting and annoying to use, because it changes the
> > behaviour I expect from my editor (it doesn't *always*
> > insert, it is deeply troubling to me). I've tried it, and I
> > could not get used to it.
> >
> > I came up with what I see as a better solution, and it feels
> > right to me: a simple command to automatically insert the
> > "correct" closing character at the current cursor location.
> > For example, invoking the same command 4 times when the cursor
> > is at the '|' location in the following expression will do
> > the right thing:
> >
> >   (comment
> >     (use '[merced.testinput :only (protocol|
> >
> > results in:
> >
> >   (comment
> >     (use '[merced.testinput :only (protocol)]))
> >
> > One advantage of this approach is the absence of "modality,"
> > i.e., the behaviour is the same in all contexts, e.g. when I
> > type to insert, it always inserts. The new command means
> > "insert to close the sequence here, whatever the sequence
> > character is."
> >
> > If you want to try it, here is the corresponding Emacs code:
> >
> >   (defvar close-matching-chars
> >     '( (?( . ?))
> >        (?[ . ?])
> >        (?{ . ?})
> >        (?< . >})
> >        ))
> >
> >   (defun close-matching ()
> >     "Close with the most appropriate matching balanced character."
> >     (interactive)
> >     ;; Scan backwards until it stops.
> >     (let ((c (save-excursion
> >                (while (ignore-errors (forward-sexp -1) (not (<=
> > (point) 1))))
> >                (backward-char 1)
> >                (string-to-char (thing-at-point 'char))
> >                )))
> >       (insert-char (cdr (assoc c close-matching-chars)) 1)
> >       ))
> >
> > Bind it to your favourite key (I use 'Ctrl-)' ):
> >
> >   (global-set-key [(control \))] 'close-matching)
> >
> > Have fun,
>
> --
> 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

Reply via email to