#+TITLE: SML layer

#+TAGS: general|layer|multi-paradigm|programming

[[file:img/sml.png]]

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#key-bindings][Key bindings]]
  - [[#form-completion][Form Completion]]
  - [[#repl][REPL]]

* Description
Adds support for the [[http://www.smlnj.org][SML]] programming language to Spacemacs.

** Features:
- Syntax highlighting
- Integration of the =SML Repl= into Emacs
- Basic completion of SML forms via =sml-electric-space=

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =sml= to the existing =dotspacemacs-configuration-layers= list in this
file.

* Key bindings
** Form Completion

| Key binding | Description                                                                               |
|-------------+-------------------------------------------------------------------------------------------|
| ~M-SPC~     | Inserts a space and completes the form before the cursor.                                 |
| ~\vert{}~   | Inserts a pipe and adds a double arrow or copies the function name. Generally just works. |

** 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 f~ | Send function to REPL                                             |
| ~SPC m s F~ | Send function to REPL and switch to REPL buffer in =insert state= |
| ~SPC m s i~ | Run the sml REPL or switch to it if the REPL is already running   |
| ~SPC m s r~ | Send region to REPL                                               |
| ~SPC m s R~ | Send region to REPL and switch to REPL buffer in =insert state=   |
| ~SPC m s s~ | Run the sml REPL or switch to it if the REPL is already running   |
