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
Eivind Fonn 928983da47 Refactor jump to definition
This commit defines:

- spacemacs-default-jump-handlers: a list of functions that can jump to
  definition in ALL modes.

- spacemacs-jump-handlers-MODE: a list of functions that can jump to
  definition in MODE.

- spacemacs-jump-handlers: a buffer-local list of functions that can
  jump to definition. This is made up of the values of the two previous
  variables whenever a given major mode is activated.

- spacemacs/jump-to-definition: a function that tries each function in
  spacemacs-jump-handlers in order, and stops when one of them takes us
  somewhere new.

- spacemacs|define-jump-handlers: a macro that
  * defines spacemacs-jump-handlers-MODE, possibly filled with initial
    functions
  * defines a function that is added to the hook of the given MODE
  * binds “SPC m g g” of that MODE to spacemacs/jump-to-definition

This is an attempt to harmonize all the different approaches to jumping.
Specifically,

- Existing intelligent jump packages that work for only a single mode
  should go to the beginning of spacemacs-jump-handlers-MODE. E.g.
  anaconda for python, ensime for scala, etc.

- Packages like gtags that work for several modes (but potentially not
  all) and which is dumber than the intelligent jumpers should go the
  the END of spacemacs-jump-handlers-MODE.

- Packages like dumb-jump that work for all modes should go to
  spacemacs-default-jump-handlers.

In all cases the order of the jump handlers in each list should be from
most to least intelligent.

Fixes #6619
2016-08-22 15:08:25 +02:00
..
img
config.el incorporate new functionality from psc-ide 2016-07-05 00:23:16 -04:00
packages.el Refactor jump to definition 2016-08-22 15:08:25 +02:00
README.org add keybindings for goto definition functionality 2016-07-21 12:13:34 +02:00

Purescript layer

/TakeV/spacemacs/media/commit/734c87fb2410550fd4bae1f22dad322ae4475191/layers/+lang/purescript/img/purescript-logo.png

Description

This layer provides basic Purescript editing support for spacemacs thanks to the following packages:

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 it 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

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)

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