

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
-
106
psc-ide-vim A vim plugin that interfaces with purs ide, PureScript's editor support server. Setup Installing the plugin via Vundle/NeoBundle/etc: NeoBundle "frigoeu/psc-ide-vim" If y...
-
167
purescript-vim Purescript language support for vim and neovim providing syntax highlighting and indentation based on based on
-
63
PureScript Mode for Emacs This is the PureScript mode package for Emacs. To report problems or suggestions, please open an issue in the iss...
-
44
There are a lot of blog-posts regarding using Emacs as a C++ IDE.But i would like to share my personal configuration, because it took my some time to get it ...
-
68
How to set up your Emacs to have the features you would expect from modern C++ IDE.
-
68
My Emacs configuration
-
45
README.org
-
6
Using Emacs in an IDE world Aug 23, 2021 I remember the sad day that I finally gave up on using Emacs for Java development at work. I had spent hours trying to configure it to pr...
-
8
Emacs as a F# IDE (part1) # Sep 3, 2018 tags:...
-
12
GNU Emacs as a lightweight IDE April 09, 20...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK