#+TITLE: Swift layer

[[file:img/swift.png]]

* Table of Contents                                         :TOC_4_gh:noexport:
 - [[#description][Description]]
 - [[#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.

It relies on the [[https://github.com/chrisbarrett/swift-mode][swift-mode]] major-mode* for Emacs 24.4 or later, to provide the
following features:

- Syntax highlighting
- 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 OS X:
#+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 keybinding ~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 |
