DrRacket has many great features, but one of my favourites the script capability that allows you to quickly and easily extend DrRacket. The scripts are immediately accessible and - this is the best part - DrRacket is scripted in Racket!
Here is a quick example: Open terminal here:
#lang racket/base
(require racket/system
racket/path
quickscript)
(script-help-string "Open a terminal in the directory of the current file.")
(define-script open-terminal
#:label "Open terminal here"
#:menu-path ("&Utils")
#:os-types (unix macosx windows)
(λ (str #:file f)
(unless f
(set! f (current-directory)))
(define dir (path->string (path-only f)))
(case (system-type 'os)
[(unix)
(system (string-append "gnome-terminal"
" --working-directory=\"" dir "\""
" -t \"" dir "\""
"&"))]
[(macosx)
(system
(string-append "osascript -e 'tell app \"Terminal\" to do script \"cd \\\"" dir "\\\"\"'" ))]
[(windows)
(shell-execute #f "cmd.exe" "" dir 'sw_shownormal)])
#false))
This script opens a command line / terminal session in the folder of the file in the currently selected tab.
In windows the menu looks like this:

Menus are ok, but I want a keybinding! keybindings are fast and I want to be fast!
Lets get started:
-
click on 'quickscript' in the require and press the F1 key - DrRacket opens a local copy of the documentation to a search

-
click on 'Quickscript' for the full documentation
-
I'll add the
#:shortcut#:shortcut-prefixkeywords so I can press[option]-[t]to open the command line:
(define-script open-terminal
#:label "Open terminal here"
#:menu-path ("&Utils")
#:shortcut #\t
#:shortcut-prefix (option)
#:os-types (unix macosx windows)
(λ (str #:file f)
...
- Save, then click
Scripts>Compile scripts
Now I can click [option]-[t], and my command line opens!
The DrRacket plugin that makes this all possible is Quickscript, and it was created by @Laurent.O.
You don't need to install it as it is included when you download the Racket installer.
In addition to making your own scripts there is a nice set of scripts in the quickscripts-extra package, with more listed on the Racket wiki at https://github.com/racket/racket/wiki/Quickscript-Scripts-for-DrRacket.
I'd very much like to see what scripts you make.
Best regards
Stephen ![]()
PS I didn't write Open terminal here - it was written by @Laurent.O but thanks also to @bdeket and @soapdog for working out the windows and linux specific calls. I'm sorry I can't remember who helped me with osascript - but thank you too.



