GithubHelp home page GithubHelp logo

tarsbase / psc-ide-emacs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from purescript-emacs/psc-ide-emacs

0.0 1.0 0.0 310 KB

Emacs integration for PureScript's psc-ide tool.

License: GNU General Public License v3.0

Emacs Lisp 100.00%

psc-ide-emacs's Introduction

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)

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

psc-ide-emacs's People

Contributors

actionshrimp avatar adamw avatar bogdanp avatar bsermons avatar dbushenko avatar epost avatar eskimor avatar foollbar avatar iammrinal0 avatar j0ni avatar justinwoo avatar kritzcreek avatar liaowang11 avatar marsam avatar mechairoi avatar paulyoung avatar purcell avatar rexim avatar syohex avatar themoritz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.