Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

CS 135 DrTools

DrRacket Tools for CS 135 course at UWaterloo

Autocomplete Demo


  • The authors are NOT responsible for any issues using any part of this repository will cause you. ALWAYS back up your files, preferences and code!
  • Though it may not be necessary in all cases, DrRacket should be restarted after most customizations to allow all changes to take effect.




There are 2 parts of this package that you can install. By following the steps below, you will get autocomplete and additional keybindings. To install the preferences, follow the installation section under Racket Preferences. Default Racket keybindings will continue to work after installation.

  1. Go to File > Install Package... from the menubar.
  2. Put cs135-drtools in the input field beside Package Source:, and click Install.
  3. Restart DrRacket.



  • Ctrl+Space trigger (Will NOT work in comments!) just hit enter and remove the newline after completion, we're working on making these work in comments)
  • Completion for the following:
Shortcut Generates
cx check-expect
cw check-within
ce check-error
df define function
d define
ds define structure
m make structure
c cond with else
if if statement
con list in cons notation
li abbreviated list
dsp display
t true
f false
e empty
hdr file header
cmt comment
l ;;
ll 3-line comment
pa 3-line "Part a" comment
pb 3-line "Part b" comment
pc 3-line "Part c" comment
pd 3-line "Part d" comment
pe 3-line "Part e" comment
pf 3-line "Part f" comment
ppe Purpose and examples
ctr Contract
req Requires
tst Tests
lox list-of-X Template
nelox ne-List-of-X Template
lo (listof )
nelo (ne-listof )
lost (listof Str)
nelost (ne-listof Str)
lob (listof Bool)
nelob (ne-listof Bool)
loc (listof Char)
neloc (ne-listof Char)
losy (listof Sym)
nelosy (ne-listof Sym)
lonu (listof Num)
nelonu (ne-listof Num)
lona (listof Nat)
nelona (ne-listof Nat)


  1. Type a shortcut
  2. Press Ctrl+Space
  3. The shortcut will be replaced with generated code


  • Works out of the box after installing the package
  • Note: No commonly-used original keybindings are overwritten. (i.e. The DrRacket default keybindings still do what they used to. This package simply adds more.)
  • Provides the following keybindings:
Keybinding What it does DrRacket default
Alt+R Run the program Ctrl+R or F5
Ctrl+Shift+F Indent all lines Ctrl+I
Ctrl+H Show Replace Ctrl+Shift+R
Ctrl+Shift+R Replace All None
Ctrl+/ Comment out line with ; None
Ctrl+Backspace Delete word left of cursor Alt+Backspace
Ctrl+Delete Delete word right of cursor Alt+Delete
Alt+Up/Down Switch between Interactions and Definitions panes Ctrl+F6

Racket Preferences

  • Dark mode based on Monokai v2.1
  • [ (left square bracket) will automatically determine the right bracket for you (no need to Shift+9 anymore!) and insert a close bracket for you as well
  • In addition to the notable ones mentioned here, all the features we found useful have been enabled. The default language for new files is set to Beginning Student Custom, the starting language for CS 135 at UWaterloo. This may change as we progress through the course, or it may not.


Additional Tips

Installing the drcomplete raco package (not part of this package) will provide automated completion of variables and functions. You can install drcomplete the same way you installed cs135-drtools. After restarting DrRacket, click Edit > Enable Automatic Autocompletion (last item) in the menubar to enable it, if it isn't already enabled.

We accept Pull Requests! If you have a template or shortcut you think is useful and should be added, contribute to our repo on GitHub!