Skip to content

purescript-emacs/psc-ide-emacs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4e614df · Jan 13, 2024
Apr 21, 2017
Oct 18, 2015
Dec 19, 2023
Oct 25, 2015
Aug 17, 2017
Dec 17, 2019
Feb 16, 2019
Mar 10, 2019
Dec 17, 2019
Jan 13, 2024

Repository files navigation

http://melpa.org/packages/psc-ide-badge.svg

psc-ide-emacs

Emacs integration for psc-ide

Installation

The package is available on MELPA. Please read the MELPA’s Getting Started guide for more information. Once you have MELPA configured install psc-ide-emacs via package.el:

M-x package-install RET psc-ide RET

Configuration

Add the following to your ~/.emacs:

(require 'psc-ide)

(add-hook 'purescript-mode-hook
  (lambda ()
    (psc-ide-mode)
    (company-mode)
    (flycheck-mode)
    (turn-on-purescript-indentation)))

If you want to use the psc-ide server that is relative to your npm bin directory, e.g. ./node_modules/.bin/purs, add this line to your config:

(setq psc-ide-use-npm-bin t)

If you would like to use a custom codegen target for your rebuild. (default is “js”)

There is a `psc-ide-codegen` option that can be set globally in your user config:

(setq psc-ide-codegen '("corefn"))

or in specific files by addind this to the top of file:

-- -*- psc-ide-codegen: ("corefn") -*-

Usage

Start the Server C-c C-s

Load all the modules C-c C-l

This isn’t usually necessary, as the start server command sends a load all command after starting the server.

Get completions from the modules you imported while you type (through company-mode)

http://i.imgur.com/8WnRh0s.gif

Get completions from all modules in your project with company-complete

This was bound to C-SPC in earlier versions but was too intrusive for usual emacs users so you’ll have to bind it to a key of choice.

eg. (global-set-key (kbd "C-SPC") 'company-complete)

http://i.imgur.com/LR69MdN.gif

Show type for identifier under cursor C-c C-t

http://i.imgur.com/A8cXe9t.gif

Prepending the universal argument expands type synonyms in the displayed type.

For example: C-c C-t might return getName :: Person -> String

If Person is a type synonym for a record you can use the universal argument to inspect that record:

C-u C-c C-t will then return getName :: { name :: String, age :: Int } -> String

Go to definition M-.

You can use M-, to jump back to where you came from . If your sourcefiles are not captured by the default globs you can add a .dir-locals.el file to the root of your project, like so:

((purescript-mode
  . ((psc-ide-source-globs
      . ("src/**/*.purs" "test/**/*.purs" "examples/**/*.purs")))))

Modify the globs accordingly and don’t worry about dependency globs for bower, psc-package or spago projects. The plugin picks these up by default. Check the doc-string for `psc-ide-source-globs` for some advanced options.

Add an import for the identifier under cursor C-c C-i

If the import is ambiguous you will get a selection of modules, from which you can choose the identifier you want.

http://i.imgur.com/VBXDvPg.gif

Add an import on completion (turned on by default)

Can be turned off with:

(customize-set-variable 'psc-ide-add-import-on-completion nil)

http://i.imgur.com/r6rl2lT.gif

Case Split the given type under cursor C-c C-c

http://i.imgur.com/hTnHxhK.gif

Add a clause for the function definition under cursor C-c C-a

http://i.imgur.com/VNeC3z8.gif

Rebuild the current module and get quick error reporting C-c C-b

If you set (customize-set-variable 'psc-ide-rebuild-on-save t) psc-ide will try to rebuild your module on every save.

http://i.imgur.com/c0L6C4B.gif

Flycheck Support

Ignore certain errors or warnings

This is determined by the variable psc-ide-flycheck-ignored-error-codes. It can be configured with customize-option or similar methods.

Insert suggestion from error C-c M-s

When the cursor is placed over an error that includes suggestion information, use C-c M-s to apply the suggestion.

Keybindings

KeyFunction
C-c C-spsc-ide-server-start
C-c C-qpsc-ide-server-quit
C-c C-tpsc-ide-show-type
C-c C-ipsc-ide-add-import
C-c C-apsc-ide-add-clause
C-c C-cpsc-ide-case-split
C-c C-lpsc-ide-load-all
C-c C-bpsc-ide-rebuild
C-c C-S-lpsc-ide-load-module
C-c M-spsc-ide-flycheck-insert-suggestion

About

Emacs integration for PureScript's psc-ide tool.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 24