Skip to content

purescript-emacs/emacs-psci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 

Repository files navigation

psci-mode

At the moment, not everything works.

For example, the `:r` command (which is supposed to reset the loaded modules of the current session) does nothing (but it does work in a terminal session).

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 good documentation:

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

Note Providing PR is merged.

Melpa-stable

Their good documentation:

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

Marmalade

Their good 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

M-x el-get-install RET psci RET

Note Providing PR is merged.

Setup

Start

M-x psci

This will open a psci repl in your project root folder (using projectile to determine that).

Setup

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 for this mode:

KeybindingsInteractive commandsDescription
<kbd>C-c C-l</kbd><kbd>M-x psci/load-current-file!</kbd>Equivalent of `:m /path/to/current/module/file.purs`
<kbd>C-c M-n</kbd><kbd>M-x psci/load-module!</kbd>Equivalent of `:i your.current.module.name`
<kbd>C-c C-r</kbd><kbd>M-x psci/load-project-modules!</kbd>Load or reload modules defined in your project file .psci
N/A<kbd>M-x psci/reset!</kbd>Equivalent of :r
<kbd>C-c C-z</kbd>Provided 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.

About

Major mode for psci (purescript's repl)

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 11