59

GitHub - epost/psc-ide-emacs: Emacs integration for PureScript's psc-ide...

 6 years ago
source link: https://github.com/epost/psc-ide-emacs
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK