Non voglio modificare il codice Lisp senza un editor che fa quello che Emacs farà con la seguente configurazione:
(define-key lisp-mode-shared-map "[" 'insert-parentheses)
(define-key lisp-mode-shared-map "]" 'move-past-close-and-reindent)
Gli ex inserti parentesi bilanciate. Se gli dai un argomento con prefisso numerico, inserisce molte coppie annidate. Per impostazione predefinita, ne inserisce uno. Se si dispone di un'area di testo contrassegnata, racchiude quella regione nella coppia più interna inserita. Ciò significa che non aprirai mai una parentesi che non è chiusa.
Quest'ultimo è più difficile da spiegare, in quanto viene utilizzato meno frequentemente. È più un comando di navigazione che un comando di inserimento. Conferma che hai finito di modificare il modulo corrente e sposta il cursore verso l'alto, l'esterno e oltre, preparando il prossimo inserimento probabile.
Con questi tasti associati, non è più necessario utilizzare il tasto Maiusc per accedere alle parentesi. Inoltre, questo lascia le chiavi parentesi legate normalmente, poiché è richiesta la riparazione di sexp o una parentesi letterale. Ho rubato le chiavi della staffa perché sono usate così raramente in Emacs Lisp e Common Lisp. I caratteri di parentesi sono ancora accessibili con combinazioni di tasti meta:
(defmacro make-key-inserter (def)
"Substitute for `self-insert-command'."
`(lambda (arg)
(interactive "*P")
(insert-char ,def (prefix-numeric-value arg))))
(define-key lisp-mode-shared-map "\M-[" (make-key-inserter ?\[))
(define-key lisp-mode-shared-map "\M-]" (make-key-inserter ?\]))
Non è indispensabile l'utilizzo di Emacs, ma non accontentarsi di meno con un altro editor che non può corrispondere almeno questa capacità. C'è anche un'intera famiglia di comandi per la navigazione e la manipolazione del sexp come albero. Comprendere il motivo per cui ciò è prezioso ti richiederà di armeggiare per un po 'finché non smetterai di vedere la sintassi e inizi a vedere l'albero.
Oh che così completamente rocce! Eccezionale! –
Hmmm, l'applet java che funziona non funziona per me. Sembra il tipo di cosa che stavo cercando, ma in realtà non funziona in FF o Chrome. Peccato, dovrò guardarmi intorno per vedere se c'è una soluzione alternativa per farlo funzionare. – Kzqai
@Tchalvak: strano. Funziona in FF su Vista per me adesso. –