diff --git a/init.example.el b/init.example.el index ca6f3bc1c..e56360472 100644 --- a/init.example.el +++ b/init.example.el @@ -107,6 +107,7 @@ ;;elm ; care for a cup of TEA? emacs-lisp ; drown in parentheses ;;ess ; emacs speaks statistics + ;;fsharp ; ML stands for Microsoft's Language ;;go ; the hipster dialect ;;(haskell +intero) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python diff --git a/modules/lang/fsharp/README.org b/modules/lang/fsharp/README.org new file mode 100644 index 000000000..b4d2874ec --- /dev/null +++ b/modules/lang/fsharp/README.org @@ -0,0 +1,54 @@ +#+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]] +- [[#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 +This module provides no flags. + +** Plugins ++ [[https://github.com/fsharp/emacs-fsharp-mod+e][fsharp-mode]] +** Hacks +None so far. + +* Prerequisites +** Mono +To get code completion/syntax checking, 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 +* 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. diff --git a/modules/lang/fsharp/config.el b/modules/lang/fsharp/config.el new file mode 100644 index 000000000..f56000a1c --- /dev/null +++ b/modules/lang/fsharp/config.el @@ -0,0 +1,14 @@ +;;; lang/fsharp/config.el -*- lexical-binding: t; -*- + +(after! fsharp-mode + (setq fsharp-ac-use-popup nil) ; Use a buffer for docs rather than a pop-up + (set-lookup-handlers! 'fsharp-mode :async t :definition #'fsharp-ac/gotodefn-at-point) + (set-company-backend! 'fsharp-mode 'fsharp-ac/company-backend) + (set-repl-handler! 'fsharp-mode #'run-fsharp) + (map! :localleader + :map fsharp-mode-map + "b" #'fsharp-ac/pop-gotodefn-stack ; Useful for re-tracing your steps + "e" #'fsharp-eval-region + "l" #'fsharp-load-buffer-file + "q" #'fsharp-ac/stop-process + "t" #'fsharp-ac/show-tooltip-at-point)) diff --git a/modules/lang/fsharp/doctor.el b/modules/lang/fsharp/doctor.el new file mode 100644 index 000000000..86c633457 --- /dev/null +++ b/modules/lang/fsharp/doctor.el @@ -0,0 +1,5 @@ +;;; lang/fsharp/doctor.el -*- lexical-binding: t; -*- + +(when (require 'fsharp-mode nil t) + (unless (cl-some #'fsharp-mode--executable-find '("fsharpc" "fsc")) + (warn! "Cannot find the F# compiler. Most features will not work."))) diff --git a/modules/lang/fsharp/packages.el b/modules/lang/fsharp/packages.el new file mode 100644 index 000000000..1a303123f --- /dev/null +++ b/modules/lang/fsharp/packages.el @@ -0,0 +1,4 @@ +;; -*- no-byte-compile: t; -*- +;;; lang/fsharp/packages.el + +(package! fsharp-mode)