spacemacs/layers/+lang/racket/README.org
Miciah Masters 552fd5953c Update references to macOS
Apple renamed "Mac OS X" to "OS X" in 2012 and then to "macOS" in 2016.
Update references to use the current name.
2019-10-13 12:04:40 +02:00

106 lines
4.2 KiB
Org Mode

#+TITLE: Racket layer
#+TAGS: general|layer|multi-paradigm|programming
[[file:img/racket.png]]
* Table of Contents :TOC_5_gh:noexport:
- [[#description][Description]]
- [[#features][Features:]]
- [[#install][Install]]
- [[#structurally-safe-editing][Structurally safe editing]]
- [[#key-bindings][Key bindings]]
- [[#navigation][Navigation]]
- [[#documentation][Documentation]]
- [[#tests][Tests]]
- [[#repl][REPL]]
- [[#other-key-bindings][Other key bindings]]
* Description
Adds support for the [[http://racket-lang.org/][Racket]] programming language.
** Features:
- Syntax highlighting with =racket-mode=
- Test runner
- Interactive REPL
- Code navigation with =gtags=
- Structurally safe editing using optional [[https://github.com/luxbock/evil-cleverparens][evil-cleverparens]]
* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =racket= to the existing =dotspacemacs-configuration-layers= list in this
file. You will also need DrRacket installed. Alternatively, one can use the
"Minimal Racket" installation, and then run the following command.
#+BEGIN_SRC Bash
raco pkg install drracket
#+END_SRC
* Structurally safe editing
This layer adds support for =evil-cleverparens= which allows to safely edit
lisp code by keeping the s-expressions balanced.
By default this mode is not activated. You can turn it on locally on the
active buffer with ~SPC m T s~ (=s= for safe).
To turn it on automatically for all =racket= buffers call the following
function in your =dotspacemacs/user-config= function:
#+BEGIN_SRC emacs-lisp
(spacemacs/toggle-evil-safe-lisp-structural-editing-on-register-hook-racket-mode)
#+END_SRC
or to enable it for all supported modes:
#+BEGIN_SRC emacs-lisp
(spacemacs/toggle-evil-safe-lisp-structural-editing-on-register-hooks)
#+END_SRC
When enabled the symbol =🆂= should be displayed in the mode-line.
* Key bindings
** Navigation
| Key binding | Description |
|-------------+-------------------------------------|
| ~SPC m g `~ | Return to previous location |
| ~SPC m g g~ | Go to definition of symbol at point |
| ~SPC m g m~ | Go to module at point |
| ~SPC m g r~ | Open require path |
** Documentation
| Key binding | Description |
|-------------+---------------------------------------------------------------|
| ~SPC m h d~ | Describes the function at point in a =Racket Describe= buffer |
| ~SPC m h h~ | View documentation of the identifier or string at point. |
** Tests
| Key binding | Description |
|-------------+-----------------------------------|
| ~SPC m t b~ | Run tests of buffer |
| ~SPC m t B~ | Run tests of buffer with coverage |
** REPL
| Key binding | Description |
|-------------+-----------------------------------------------------------------|
| ~SPC m s b~ | Send buffer to REPL |
| ~SPC m s B~ | Send buffer to REPL and switch to REPL buffer in =insert state= |
| ~SPC m s e~ | Send last sexp to REPL |
| ~SPC m s E~ | Send last sexp to REPL and switch to REPL in =insert state= |
| ~SPC m s f~ | Send function at point to REPL |
| ~SPC m s F~ | Send function at point and switch to REPL in =insert state= |
| ~SPC m s i~ | Start a REPL or switch to REPL buffer |
| ~SPC m s r~ | Send region to REPL |
| ~SPC m s R~ | Send region to REPL and switch to REPL in =insert state= |
| ~SPC m s s~ | Show and switch to REPL buffer |
** Other key bindings
| Key binding | Description |
|-------------+---------------------------------------------------------------------------------|
| ~SPC m i l~ | Insert lambda character |
| ~H-r~ | Run current file and open REPL (=H= is hyper, *may* be bound to command on macOS) |