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
syl20bnr 584392bd92 [core] Fix layer dependencies based on layer variables
There was a edge case with the declaration of the `lsp` layer in `layers.el`
files.
The `hy` layer depends on the `python` layer which in turn depends on the `lsp`
layer if and only if the `python-backend` layer variable is set to `lsp`.
When the `hy` layer was declared first then it declares the `python` layer
without its layer variables, thus the `lsp` layer was not declared because the
`python-backend` variable was not set.

The fix is to gather all the layer dependencies and resolve them only after all
the used layers have been declared.

* new function `configuration-layer/declare-layer-dependencies`
* replace all calls to `configuration-layer/declare-layer` by the new function
  except for distribution layers (we declare layer dependencies right away in
  distribution layers)
2019-09-30 02:00:48 -04:00
..
img
config.el Happy New Year 2018! 2018-01-04 02:00:25 -05:00
layers.el [core] Fix layer dependencies based on layer variables 2019-09-30 02:00:48 -04:00
packages.el Declare purescript prefixes in purescript-mode 2019-04-07 18:07:57 +02:00
README.org documentation formatting: Sun May 26 20:58:52 UTC 2019 2019-05-27 01:23:35 +03:00

Purescript layer

/TakeV/spacemacs/media/commit/3a51e00a4069aaa895590a6c2dc64531b8d85741/layers/+lang/purescript/img/purescript-logo.png

Description

This layer provides basic Purescript editing support for spacemacs.

Features:

  • Syntax highlighting through purescript-mode
  • Automatic insert of imports through psc-ide-emacs
  • REPL through psci
  • Syntax checking through flycheck
  • Autocompletion through company

Install

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

You'll also need to make sure the PureScript compiler and its associated binaries (psc-ide-server, psci,…) are on your path. Installation instructions can be found here.

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.

Node Modules

If you would like node_modules/.bin to be automatically added to the buffer local exec_path, e.g. to support project local purs/pulp installations, set the node-add-modules-path variable in the purescript config section. Note that doing this introduces a security risk:

  (setq-default dotspacemacs-configuration-layers
    '((purescript :variables node-add-modules-path t)))

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.

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

psc-ide

Key binding Description
SPC m m s Start psc-ide-server
SPC m m q Quit the current psc-ide-server
SPC m m l Load definitions for the modules inside your project
SPC m m b Rebuilds the current file and displays any warnings or errors
SPC m m t Add a new clause for the function signature at point
SPC m m c Casesplits on the identifier at the current cursor position
SPC m m L Load a specific module (This is mostly used for troubleshooting)
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 h t Show type at point
SPC m g g Goto definition for identifier at point

REPL

psci provides a very basic REPL for purescript. The following key 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