- CSS links - GIFS in published version - Unify layer doc titles - Change emoji layer emojis to an image
97 lines
4.2 KiB
Org Mode
97 lines
4.2 KiB
Org Mode
#+TITLE: Ocaml layer
|
|
#+HTML_HEAD_EXTRA: <link rel="stylesheet" type="text/css" href="../../../css/readtheorg.css" />
|
|
|
|
[[file:img/ocaml.png]]
|
|
|
|
* Table of Content :TOC_4_org:noexport:
|
|
- [[Description][Description]]
|
|
- [[Features:][Features:]]
|
|
- [[Install][Install]]
|
|
- [[Layer][Layer]]
|
|
- [[OPAM packages][OPAM packages]]
|
|
- [[Key Bindings][Key Bindings]]
|
|
- [[REPL (utop)][REPL (utop)]]
|
|
- [[TODOS][TODOS]]
|
|
- [[Add more proper spacemacs key-bindings for basic merlin tasks][Add more proper spacemacs key-bindings for basic merlin tasks]]
|
|
- [[Add proper keybindings for ocamldebug][Add proper keybindings for ocamldebug]]
|
|
- [[Add more keybindings for tuareg-mode][Add more keybindings for tuareg-mode]]
|
|
|
|
* Description
|
|
This is a very basic layer for editing ocaml files.
|
|
|
|
** Features:
|
|
- Syntax highlighting (major-mode) via [[https://github.com/ocaml/tuareg][tuareg-mode]]
|
|
- Error reporting, completion and type display via [[https://github.com/the-lambda-church/merlin][merlin]]
|
|
- auto-completion with company mode via [[https://github.com/the-lambda-church/merlin][merlin]]
|
|
- syntax-checking via [[https://github.com/diml/utop][flycheck-ocaml]]
|
|
|
|
* Install
|
|
** Layer
|
|
To use this contribution add it to your =~/.spacemacs=
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq-default dotspacemacs-configuration-layers '(ocaml))
|
|
#+END_SRC
|
|
|
|
** OPAM packages
|
|
This layer requires some [[http://opam.ocaml.org][opam]] packages:
|
|
|
|
- =merlin= for auto-completion
|
|
- =utop=
|
|
- =ocp-indent=
|
|
|
|
To install them, use the following command:
|
|
|
|
#+BEGIN_SRC sh
|
|
opam install merlin utop ocp-indent
|
|
#+END_SRC
|
|
|
|
Make sure opam is initialized and configured.
|
|
|
|
#+begin_src sh
|
|
opam init
|
|
opam config setup -a
|
|
#+end_src
|
|
|
|
* Key Bindings
|
|
|
|
| Key Binding | Description |
|
|
|-------------+----------------------------------------------------------|
|
|
| ~SPC m c c~ | Compile |
|
|
| ~SPC m c p~ | Check .merlin for errors |
|
|
| ~SPC m c r~ | Refresh changed .cmis in merlin |
|
|
| ~SPC m e C~ | Check for errors in current buffer |
|
|
| ~SPC m e n~ | Jump to next error |
|
|
| ~SPC m e N~ | Jump back to previous error |
|
|
| ~SPC m g a~ | Switch ML <-> MLI |
|
|
| ~SPC m g b~ | Go back to the last position where the user did a locate |
|
|
| ~SPC m g g~ | Locate the identifier under point (same window) |
|
|
| ~SPC m g G~ | Locate the identifier under point (different window) |
|
|
| ~SPC m g l~ | Prompt for identifier and locate |
|
|
| ~SPC m g i~ | Prompt for module name and switch to ML file |
|
|
| ~SPC m g I~ | Prompt for module name and switch to MLI file |
|
|
| ~SPC m h h~ | Document the identifier under point |
|
|
| ~SPC m h t~ | Highlight identifier under cursor and print its type |
|
|
| ~SPC m h T~ | Prompt for expression and show its type |
|
|
| ~SPC m r d~ | Case analyze the current enclosing |
|
|
|
|
** REPL (utop)
|
|
|
|
| Key Binding | Description |
|
|
|-------------+------------------------------------------------------------------|
|
|
| ~SPC m s b~ | Send buffer to the REPL |
|
|
| ~SPC m s B~ | Send buffer to the REPL and switch to the REPL in =insert state= |
|
|
| ~SPC m s i~ | Start a REPL |
|
|
| ~SPC m s p~ | Send phrase to the REPL |
|
|
| ~SPC m s P~ | Send phrase to the REPL and switch to the REPL in =insert state= |
|
|
| ~SPC m s r~ | Send region to the REPL |
|
|
| ~SPC m s R~ | Send region to the REPL and switch to the REPL in =insert state= |
|
|
| ~C-j~ | (in REPL) next item in history |
|
|
| ~C-k~ | (in REPL) previous item in history |
|
|
|
|
* TODOS
|
|
|
|
** TODO Add more proper spacemacs key-bindings for basic merlin tasks
|
|
** TODO Add proper keybindings for ocamldebug
|
|
** TODO Add more keybindings for tuareg-mode
|