1.3 Editing with Parentheses

In Racket mode, especially, DrRacket’s editor provides special support for managing parentheses in a program. When the blinking caret is next to a parenthesis, DrRacket shades the region between the parenthesis and its matching parenthesis. This feature is especially helpful when balancing parentheses to complete an expression.

Although whitespace is not significant in Racket, DrRacket encourages a particular format for Racket code. When you type Enter or Return, the editor inserts a new line and automatically indents it. To make DrRacket re-indent an existing line, move the blinking caret to the line and hit the Tab key. (The caret can be anywhere in the line.) You can re-indent an entire region by selecting the region and typing Tab.

DrRacket also rewrites parenthesis as you type them, in order to make them match better. If you type a closing parenthesis ), a closing square bracket ], or a closing curly brace }, and if DrRacket can match it back to some earlier opening parenthesis, bracket, or brace, then DrRacket changes what you type to match. DrRacket also rewrites open square brackets, usually to an open parenthesis. There are some exceptions where opening square brackets are not automatically changed to parentheses:

The upshot of DrRacket’s help is that you can always use the (presumably unshifted) square brackets on your keyboard to type parenthesis. For example, when typing

(define (length l)
  (cond
    [(empty? l) 0]
    [else (+ 1 (length (rest l)))]))

If you always type [ and ] where any of the square brackets or parentheses appear, DrRacket will change the square brackets to match the code above.

Of course, these features can be disabled and customized in the preferences dialog; see Preferences. Also, in case DrRacket does not produce the character you want, holding down the control key while typing disables DrRacket’s parenthesis, brace, and bracket converter.