2015-12-02 14:23:39 +00:00
|
|
|
#+TITLE: Idris layer
|
2015-07-04 00:10:27 +00:00
|
|
|
|
2019-05-07 08:53:56 +00:00
|
|
|
#+TAGS: general|layer|programming|pure
|
2019-05-05 17:26:40 +00:00
|
|
|
|
2015-07-04 00:10:27 +00:00
|
|
|
[[file:img/idris.png]]
|
|
|
|
|
2019-05-07 20:05:06 +00:00
|
|
|
* Table of Contents :TOC_5_gh:noexport:
|
2017-05-22 14:16:12 +00:00
|
|
|
- [[#description][Description]]
|
2018-01-19 15:27:23 +00:00
|
|
|
- [[#features][Features:]]
|
2017-05-22 14:16:12 +00:00
|
|
|
- [[#install][Install]]
|
|
|
|
- [[#layer][Layer]]
|
|
|
|
- [[#idris][Idris]]
|
|
|
|
- [[#key-bindings][Key bindings]]
|
|
|
|
- [[#shorthands][Shorthands]]
|
|
|
|
- [[#interactive-editing][Interactive editing]]
|
|
|
|
- [[#documentation][Documentation]]
|
|
|
|
- [[#repl][REPL]]
|
|
|
|
- [[#active-term-manipulations][Active term manipulations]]
|
|
|
|
- [[#build-system][Build system]]
|
2015-07-04 00:10:27 +00:00
|
|
|
|
|
|
|
* Description
|
2018-01-19 15:27:23 +00:00
|
|
|
This layer adds support for the [[https://www.idris-lang.org/][Idris]] language to Spacemacs.
|
|
|
|
|
|
|
|
** Features:
|
|
|
|
- Syntax highlighting
|
|
|
|
- Syntax checking via =flycheck=
|
|
|
|
- Integration of the =Idris= REPL
|
|
|
|
- Integration of the =Idris= build system
|
2015-07-04 00:10:27 +00:00
|
|
|
|
|
|
|
* Install
|
|
|
|
** Layer
|
2016-01-06 05:21:55 +00:00
|
|
|
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
|
|
|
|
add =idris= to the existing =dotspacemacs-configuration-layers= list in this
|
|
|
|
file.
|
2015-07-04 00:10:27 +00:00
|
|
|
|
|
|
|
** Idris
|
|
|
|
Idris can be installed using =Haskell's cabal=:
|
|
|
|
|
|
|
|
#+BEGIN_SRC sh
|
2018-09-19 03:54:47 +00:00
|
|
|
cabal install idris
|
2015-07-04 00:10:27 +00:00
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
Binaries are also available for some platforms at
|
2020-10-03 18:48:37 +00:00
|
|
|
[[https://www.idris-lang.org/pages/download.html]]
|
2015-07-04 00:10:27 +00:00
|
|
|
|
|
|
|
* Key bindings
|
|
|
|
** Shorthands
|
|
|
|
Several (but not all) of the evil-leader shorthands that =idris-mode= provides
|
|
|
|
are reproduced under the local leader.
|
|
|
|
|
2018-12-05 03:03:03 +00:00
|
|
|
| Key binding | Description |
|
2016-04-05 16:23:26 +00:00
|
|
|
|-------------+---------------------------------------------------------------------------------|
|
|
|
|
| ~SPC m c~ | Case split the pattern variable under point, or make it into a case expression. |
|
|
|
|
| ~SPC m d~ | Create an initial pattern match clause for a type declaration. |
|
|
|
|
| ~SPC m l~ | Extract lemma from hole |
|
|
|
|
| ~SPC m p~ | Attempt to solve a metavariable automatically. |
|
|
|
|
| ~SPC m r~ | Load current buffer into Idris. |
|
|
|
|
| ~SPC m t~ | Get the type for the identifier under point. |
|
|
|
|
| ~SPC m w~ | Add a with block for the pattern-match clause under point. |
|
2015-07-04 00:10:27 +00:00
|
|
|
|
|
|
|
** Interactive editing
|
|
|
|
|
2018-12-05 03:03:03 +00:00
|
|
|
| Key binding | Description |
|
2015-07-04 00:10:27 +00:00
|
|
|
|-------------+--------------------------------------------------------------------------------------------|
|
|
|
|
| ~SPC m i a~ | Attempt to solve a metavariable automatically. |
|
2016-04-05 16:23:26 +00:00
|
|
|
| ~SPC m i c~ | Case split the pattern variable under point, or make it into a case expression. |
|
2015-07-04 00:10:27 +00:00
|
|
|
| ~SPC m i e~ | Extract a metavariable or provisional definition name to an explicit top level definition. |
|
|
|
|
| ~SPC m i m~ | Add missing pattern-match cases to an existing definition. |
|
|
|
|
| ~SPC m i r~ | Refine by name, without recursive proof search. |
|
|
|
|
| ~SPC m i s~ | Create an initial pattern match clause for a type declaration. |
|
|
|
|
| ~SPC m i w~ | Add a with block for the pattern-match clause under point. |
|
|
|
|
|
|
|
|
** Documentation
|
|
|
|
|
2018-12-05 03:03:03 +00:00
|
|
|
| Key binding | Description |
|
2015-07-04 00:10:27 +00:00
|
|
|
|-------------+-------------------------------------------------------|
|
|
|
|
| ~SPC m h a~ | Search the documentation for a string. |
|
|
|
|
| ~SPC m h d~ | Search the documentation for the name under point. |
|
|
|
|
| ~SPC m h s~ | Search the documentation regarding a particular type. |
|
|
|
|
| ~SPC m h t~ | Get the type for the identifier under point. |
|
|
|
|
|
|
|
|
** REPL
|
2016-04-13 03:31:38 +00:00
|
|
|
|
2018-12-05 03:03:03 +00:00
|
|
|
| Key binding | Description |
|
2015-07-04 00:10:27 +00:00
|
|
|
|-------------+----------------------------------------------------------------------------------------|
|
|
|
|
| ~SPC m s b~ | Load the current buffer into Idris. |
|
|
|
|
| ~SPC m s B~ | Load the current buffer into Idris and switch to REPL in insert state |
|
2016-04-11 08:56:29 +00:00
|
|
|
| ~SPC m s i~ | Start Idris inferior process |
|
2015-07-04 00:10:27 +00:00
|
|
|
| ~SPC m s n~ | Extend the region to be loaded one line at a time. |
|
|
|
|
| ~SPC m s N~ | Extend the region to be loaded one line at a time and switch to REPL in insert state |
|
|
|
|
| ~SPC m s p~ | Contract the region to be loaded one line at a time |
|
|
|
|
| ~SPC m s P~ | Contract the region to be loaded one line at a time and switch to REPL in insert state |
|
|
|
|
| ~SPC m s s~ | Switch to REPL buffer |
|
2016-06-18 05:58:57 +00:00
|
|
|
| ~SPC m s q~ | Quit the Idris process |
|
2015-07-04 00:10:27 +00:00
|
|
|
|
|
|
|
** Active term manipulations
|
|
|
|
|
2018-12-05 03:03:03 +00:00
|
|
|
| Key binding | Description |
|
2015-07-04 00:10:27 +00:00
|
|
|
|-------------+-----------------------------------------------|
|
|
|
|
| ~SPC m m c~ | Show the core language for the term at point. |
|
|
|
|
| ~SPC m m i~ | Show implicits for the term at point. |
|
|
|
|
| ~SPC m m h~ | Hide implicits for the term at point. |
|
|
|
|
| ~SPC m m n~ | Normalize the term at point. |
|
|
|
|
|
|
|
|
** Build system
|
|
|
|
|
2018-12-05 03:03:03 +00:00
|
|
|
| Key binding | Description |
|
2015-07-04 00:10:27 +00:00
|
|
|
|-------------+----------------------------------------------------------------------------|
|
|
|
|
| ~SPC m b c~ | Build the package. |
|
|
|
|
| ~SPC m b C~ | Clean the package, removing =.ibc= files |
|
2019-05-26 20:58:52 +00:00
|
|
|
| ~SPC m b i~ | Install the package to the user's repository, building first if necessary. |
|
2015-07-04 00:10:27 +00:00
|
|
|
| ~SPC m b p~ | Open package file. |
|
|
|
|
|
|
|
|
When inside a package file, you can insert a field with ~SPC m f~.
|