GitHub - epost/psc-ide-emacs: Emacs integration for PureScript's psc-ide...
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
)
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)
Show type for identifier under cursor C-c C-t
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.
Add an import on completion (turned on by default)
Can be turned off with:
(customize-set-variable 'psc-ide-add-import-on-completion nil)
Case Split the given type under cursor C-c C-c
Add a clause for the function definition under cursor C-c C-a
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.
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
Key | Function |
---|---|
C-c C-s | psc-ide-server-start |
C-c C-q | psc-ide-server-quit |
C-c C-t | psc-ide-show-type |
C-c C-i | psc-ide-add-import |
C-c C-a | psc-ide-add-clause |
C-c C-c | psc-ide-case-split |
C-c C-l | psc-ide-load-all |
C-c C-b | psc-ide-rebuild |
C-c C-S-l | psc-ide-load-module |
C-c M-s | psc-ide-flycheck-insert-suggestion |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK