Git Product home page Git Product logo

emacs-psci's Introduction

psci-mode http://melpa.org/packages/psci-badge.svg http://stable.melpa.org/packages/psci-badge.svg

A major mode to try and improve the purescript repl experience within emacs.

TOC

Description

What

Major mode for purescript’s repl psci.

How

Based on comint-mode (command interpreter). Following this tutorial.

Why

The purescript-mode (forked from haskell-mode) does not provide any repl integration (yet?). The experience inside the terminal is somewhat tedious at the moment. So I thought of giving it a shot.

When

How about now? (work in progress)

Who

me

Install

Many different installation possible:

Git

Clone the repository, and:

M-x package-install-file RET /path/to/emacs-psci/psci.el

Note Provided you already use melpa, the needed deps should be installed.

Package repositories

Melpa

Their documentation:

(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages") t)
(package-initialize)

Note Providing PR is merged.

Melpa-stable

Their documentation:

(require 'package)
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t
(package-initialize)

Marmalade

Their documentation:

(require 'package)
(add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
(package-initialize)

Install

With melpa, melpa-stable, marmalade:

M-x package-install RET psci RET

el-get

Their documentation:

M-x el-get-install RET psci RET

Note Providing PR is merged.

Start and setup

Start

M-x psci

This will open a psci repl within emacs from your current project root folder (using projectile to determine that).

Setup

bindings

Add the inferior-psci-mode to the purescript-mode will permit access to some default bindings:

(add-hook 'purescript-mode-hook 'inferior-psci-mode)

repl toggle

I encounter (thanks to @purcell) a simple mode that I quite like which is called repl-toggle. This permits, using the same universal binding `C-c C-z`, to go back and forth between the repl and the buffer.

(require 'repl-toggle)
(require 'psci)
(add-to-list 'rtog/mode-repl-alist '(purescript-mode . psci))

Use

Default bindings available from a purescript buffer:

KeybindingsInteractive commandsDescription
C-c C-lM-x psci/load-current-file!Equivalent of `:m /path/to/current/module/file.purs` - Load <file> for importing
C-c M-nM-x psci/load-module!Equivalent of `:i your.current.module.name` - Import <module> for use in PSCI
C-c C-rM-x psci/load-project-modules!Load or reload files defined in the project file .psci
N/AM-x psci/reset!Equivalent of `:r` - Reset
N/AM-x psci/quit!Equivalent of `:q` - Quit
C-c C-zProvided you use the previous setup, this will switch back and forth between repl and buffer

Runtime dependencies

A purescript dev platform ready. I based this development on the online book https://leanpub.com/purescript/.

Contributions

PR

More than welcome. Send me a PR and I will gladly merge it.

Simply, use fork, branch, and rebase to the latest commit. Also, I prefer code that is understandable (ymmv) and doc-stringified.

Issues

Issues, there will be.

Open issues on the tracker, I’ll do my best to answer.

Just, be sure to be clear, complete and concise about what your trouble is.

I’m open to suggestions but I’m far from being omniscient. Please, add information links, this helps everyone.

Miscellaneous

I tend to rely on other people’s code. That’s why I use a lot of dependencies. I’ll remove the unnecessary dependencies (for the moment, none but surely, some code can be rewritten without the deps) later.

emacs-psci's People

Contributors

actionshrimp avatar ardumont avatar bsermons avatar epost avatar kritzcreek avatar purcell avatar rgrinberg avatar vlatkob 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.