diff --git a/CHANGELOG.md b/CHANGELOG.md index 10169fb..e6525bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Add a Racket module. * Add a Lua module. * Auto-install `racket-mode` if needed. +* Add a F# module. ### Changes diff --git a/doc/index.md b/doc/index.md index 6111730..14eba8a 100644 --- a/doc/index.md +++ b/doc/index.md @@ -65,6 +65,7 @@ The following programming languages have enhanced support in Prelude: - [Emacs Lisp](modules/emacs_lisp.md) - Erlang - Elixir +- [F#](modules/fsharp.md) - Go - Haskell - JavaScript diff --git a/doc/modules/fsharp.md b/doc/modules/fsharp.md new file mode 100644 index 0000000..4982bb8 --- /dev/null +++ b/doc/modules/fsharp.md @@ -0,0 +1,11 @@ +# Prelude F# + +!!! Note + + This module builds on top of the shared [Programming](programming.md) module. + +## F# mode + +This module uses +[`fsharp-mode`](https://github.com/fsharp/emacs-fsharp-mode) and +`eglot-fsharp` with almost no extra configuration. diff --git a/modules/prelude-fsharp.el b/modules/prelude-fsharp.el new file mode 100644 index 0000000..d42c225 --- /dev/null +++ b/modules/prelude-fsharp.el @@ -0,0 +1,48 @@ +;;; prelude-fsharp.el --- Emacs Prelude: F# programming support. +;; +;; Author: Andre Boechat + +;; This file is not part of GNU Emacs. + +;;; Commentary: + +;; Basic setup for F# programming based on fsharp-mode and Eglot. + +;;; License: + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License +;; as published by the Free Software Foundation; either version 3 +;; of the License, or (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Code: + +(require 'prelude-programming) +(prelude-require-packages '(fsharp-mode eglot-fsharp)) + +(with-eval-after-load 'fsharp-mode + (defun prelude-fsharp-mode-defaults () + ;; A reasonable default path to the F# compiler and interpreter on + ;; Unix-like systems. + ;; https://github.com/fsharp/emacs-fsharp-mode#compiler-and-repl-paths + (setq inferior-fsharp-program "dotnet fsi --readline-") + (require 'eglot-sharp)) + + (setq prelude-fsharp-mode-hook 'prelude-fsharp-mode-defaults) + + (add-hook 'fsharp-mode-hook (lambda () + (run-hooks 'prelude-sharp-mode-hook)))) + +(provide 'prelude-fsharp) + +;;; prelude-fsharp.el ends here diff --git a/sample/prelude-modules.el b/sample/prelude-modules.el index 6cf8d1c..8880734 100644 --- a/sample/prelude-modules.el +++ b/sample/prelude-modules.el @@ -73,6 +73,7 @@ (require 'prelude-emacs-lisp) ;; (require 'prelude-erlang) ;; (require 'prelude-elixir) +;; (require 'prelude-fsharp) ;; (require 'prelude-go) ;; (require 'prelude-haskell) (require 'prelude-js)