#+TITLE: Swift layer

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

[[file:img/swift.png]]

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
- [[#usage-information][Usage information]]
- [[#key-bindings][Key bindings]]
  - [[#swift-mode][swift-mode]]
  - [[#swift-repl-mode][swift-repl-mode]]

* Description
This layer adds support for Apple's Swift programming language, used as a
general purpose scripting language.

** Features:
- Syntax highlighting with [[https://github.com/swift-emacs/swift-mode][swift-mode]]
- Indentation
- Code navigation using =imenu= (built-in)
- Automatic syntax checking with =flycheck= (available with the
  =syntax-checking= layer)

* Install
First check that you are able to run this from the command line:

On macOS:

#+BEGIN_SRC sh
  xcrun swift
#+END_SRC

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

* Usage information
Unless configured by the user, the REPL will be invoked using the command =xcrun
swift=.
You can launch the REPL using the key binding ~SPC m s s~ (or ~C-c C-z~).
The universal prefix ~SPC u~ (~C-u~) may be used to modify command invocation.

* Key bindings
** swift-mode

| Key bindings | Description            |
|--------------+------------------------|
| ~SPC m s s~  | swift-mode-run-repl    |
| ~SPC m s b~  | swift-mode-send-buffer |
| ~SPC m s r~  | swift-mode-send-region |

Notes:
1. =swift-mode-run-repl= will run or switch to an existing REPL.
2. To edit the command invocation, prefix with ~SPC u~ (or ~C-u~).
3. Emacs key bindings in use are the those set by the package.

** swift-repl-mode

| Key bindings | Description                 |
|--------------+-----------------------------|
| ~SPC m s s~  | swift-repl-mode-switch-back |
