#+TITLE: Pact layer

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

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
  - [[#layer][Layer]]
  - [[#flycheck][Flycheck]]
- [[#key-bindings][Key bindings]]
  - [[#repl][REPL]]

* Description
This layer adds support for the [[https://github.com/kadena-io/pact][Pact Smart Contract Language]].

** Features:
- Syntax highlighting for ~.pact~ source files
- Easy interaction with an embedded Pact REPL
- Flycheck integration

*Note:* You will need a ~pact~ binary on your ~PATH~ for REPL features to function.

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

** Flycheck
To enable flycheck, add the following to your =dotspacemacs/user-config=:

#+BEGIN_SRC emacs-lisp
  (add-hook 'pact-mode-hook 'flycheck-mode)
#+END_SRC

* Key bindings
All Pact specific bindings are prefixed with the major-mode leader ~SPC m~.

** REPL
REPL commands are prefixed by ~SPC m s~:

| Key binding | Description                                     |
|-------------+-------------------------------------------------|
| ~SPC m s '~ | Open a Pact REPL in a new frame                 |
| ~SPC m s b~ | Load or reload the current buffer into the REPL |
