#+TITLE:   lang/fsharp
#+DATE:    May 22, 2019
#+SINCE:   {replace with next tagged release version}
#+STARTUP: inlineimages

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
  - [[#hacks][Hacks]]
- [[#prerequisites][Prerequisites]]
  - [[#mono][Mono]]
    - [[#osx][OSX]]
    - [[#arch-linux][Arch Linux]]
  - [[#lsp][LSP]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]

* Description
# A summary of what this module does.

# + If possible, include a brief list of feature highlights here
# + Like code completion, syntax checking or available snippets
# + Include links to packages & external things where possible
This module adds [[https://fsharp.org/][F#]] support.
+ Code completion
+ eldoc support
+ Syntax checking

** Module Flags
+ =+lsp= Enables lsp-fsharp (this requires ~:tools lsp~ to be enabled).
** Plugins
+ [[https://github.com/fsharp/emacs-fsharp-mode][fsharp-mode]]
+ =+lsp=
  + [[https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-fsharp.el][lsp-fsharp]]
** Hacks
None so far.

* Prerequisites
** Mono
To get code completion/syntax checking when not using lsp, you will need to install [[https://www.mono-project.com/][mono]].
*** OSX
Do *NOT* install mono via brew. See this [[https://github.com/fsharp/FsAutoComplete/issues/331][issue]].
*** Arch Linux
#+BEGIN_SRC sh
sudo pacman -S mono
#+END_SRC
** LSP
The language server is automatically installed by [[https://github.com/emacs-lsp/lsp-mode/blob/master/clients/lsp-fsharp.el][lsp-fsharp]].
* Features
An in-depth list of features, how to use them, and their dependencies.

* Configuration
How to configure this module, including common problems and how to address them.

* Troubleshooting
Common issues and their solution, or places to look for help.
