This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+lang/purescript/README.org

85 lines
4.2 KiB
Org Mode
Raw Normal View History

#+TITLE: Purescript layer
2015-06-10 16:44:30 +00:00
[[file:img/purescript-logo.png]]
2016-03-31 02:59:55 +00:00
* Table of Contents :TOC_4_gh:noexport:
2017-05-22 14:16:12 +00:00
- [[#description][Description]]
- [[#features][Features:]]
2017-05-22 14:16:12 +00:00
- [[#install][Install]]
- [[#configuration][Configuration]]
- [[#add-import-on-completion][Add import on completion]]
- [[#error-popup][Error popup]]
- [[#key-bindings][Key bindings]]
- [[#purescript][Purescript]]
- [[#imports][Imports]]
- [[#psc-ide][psc-ide]]
- [[#repl][REPL]]
2015-06-10 16:44:30 +00:00
* Description
This layer provides basic Purescript editing support for spacemacs.
** Features:
- Syntax highlighting through [[https://github.com/dysinger/purescript-mode][purescript-mode]]
- Automatic insert of imports through [[https://github.com/epost/psc-ide-emacs][psc-ide-emacs]]
- REPL through [[https://github.com/ardumont/emacs-psci][psci]]
- Syntax checking through flycheck
- Autocompletion through company
2015-06-10 16:44:30 +00:00
* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
2016-07-05 03:33:43 +00:00
add =purescript= to the existing =dotspacemacs-configuration-layers= list in
this file.
2015-06-10 16:44:30 +00:00
You'll also need to make sure the PureScript compiler and its associated
binaries (psc-ide-server, psci,...) are on your path. Installation instructions
2017-07-04 10:09:53 +00:00
can be found [[https://github.com/purescript/documentation/blob/master/guides/Getting-Started.md][here]].
2016-07-05 03:33:43 +00:00
* Configuration
** Add import on completion
Set =purescript-add-import-on-completion= to nil to make =psc-ide= stop adding
imports on completion. Default value is =t=.
2016-07-05 03:33:43 +00:00
** Error popup
If you set =purescript-enable-rebuild-on-save= to non-nil, you will get a popup
buffer showing you your current warnings/errors one at a time. This is primarily
meant as an alternative to using flycheck. Default value is nil.
2015-06-10 16:44:30 +00:00
* Key bindings
** Purescript
*** Imports
| Key Binding | Description |
|-------------+---------------------------------------------------------------|
| ~SPC m i =~ | Format imports |
| ~SPC m i \~ | Return to where you were editing before navigating to imports |
| ~SPC m i a~ | Align imports |
| ~SPC m i n~ | Navigate to the imports |
2015-06-10 16:44:30 +00:00
*** psc-ide
2016-07-05 03:33:43 +00:00
=psc-ide= command are available under ~SPC m m~:
| Key Binding | Description |
|---------------+---------------------------------------------------------------------------|
| ~SPC m m s~ | Start psc-ide-server |
| ~SPC m m l~ | Load definitions for the modules inside your project |
| ~SPC m h t~ | Show type at point |
| ~SPC m g g~ | Goto definition for identifier at point |
| ~SPC m m b~ | Rebuilds the current file and displays any warnings or errors |
| ~SPC m m i a~ | Add an import for the identifier at the current cursor position |
| ~SPC m m i s~ | Inserts a suggestion for the warning/error at the current cursor position |
| ~SPC m m t~ | Add a new clause for the function signature at point |
| ~SPC m m c s~ | Casesplits on the identifier at the current cursor position |
| ~SPC m m q~ | Quit the current psc-ide-server |
| ~SPC m m L~ | Load a specific module (This is mostly used for troubleshooting) |
2015-06-10 16:44:30 +00:00
** REPL
[[https://github.com/ardumont/emacs-psci][psci]] provides a very basic REPL for purescript. The following key
2015-06-10 16:44:30 +00:00
bindings are available:
| Key Binding | Description |
|-------------+----------------------------------------------------------------------------------|
| ~SPC m s b~ | Equivalent of =:m /path/to/current/module/file.purs= - Load <file> for importing |
| ~SPC m s i~ | Launch a psci console buffer |
| ~SPC m s m~ | Equivalent of =:i your.current.module.name= - Import <module> for use in PSCI |
| ~SPC m s p~ | Load or reload files defined in the project file .psci |