From 9c950ff3f6cf6093c354109c3ac6bd14c672c102 Mon Sep 17 00:00:00 2001 From: Reed Mullanix Date: Fri, 5 Jul 2019 10:32:01 -0700 Subject: [PATCH 1/3] Add LSP support for F# --- modules/lang/fsharp/config.el | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/lang/fsharp/config.el b/modules/lang/fsharp/config.el index f56000a1c..b88f32bb2 100644 --- a/modules/lang/fsharp/config.el +++ b/modules/lang/fsharp/config.el @@ -1,14 +1,22 @@ ;;; 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) + (if (featurep! +lsp) + (progn + (setq fsharp-ac-intellisense-enabled nil) + (setq lsp-fsharp-server-install-dir (concat doom-etc-dir "fsautocomplete/")) + (add-hook 'fsharp-mode-hook #'lsp)) + (progn + (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) + (map! :localleader + :map fsharp-mode-map + "q" #'fsharp-ac/stop-process + "t" #'fsharp-ac/show-tooltip-at-point))) (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)) + "l" #'fsharp-load-buffer-file)) From e831607335d68e5baeed3c7ff4bba5038f18f5e9 Mon Sep 17 00:00:00 2001 From: Reed Mullanix Date: Fri, 5 Jul 2019 10:37:16 -0700 Subject: [PATCH 2/3] Document F# lsp flag --- modules/lang/fsharp/README.org | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/lang/fsharp/README.org b/modules/lang/fsharp/README.org index b4d2874ec..a11f9502e 100644 --- a/modules/lang/fsharp/README.org +++ b/modules/lang/fsharp/README.org @@ -12,6 +12,7 @@ - [[#mono][Mono]] - [[#osx][OSX]] - [[#arch-linux][Arch Linux]] + - [[#lsp][LSP]] - [[#features][Features]] - [[#configuration][Configuration]] - [[#troubleshooting][Troubleshooting]] @@ -28,22 +29,25 @@ This module adds [[https://fsharp.org/][F#]] support. + Syntax checking ** Module Flags -This module provides no flags. - ++ =+lsp= Enables lsp-fsharp (this requires ~:tools lsp~ to be enabled). ** Plugins + [[https://github.com/fsharp/emacs-fsharp-mod+e][fsharp-mode]] ++ =+lsp= + + [[https://github.com/emacs-lsp/lsp-mode/blob/master/lsp-fsharp.el][lsp-fsharp]] ** Hacks None so far. * Prerequisites ** Mono -To get code completion/syntax checking, you will need to install [[https://www.mono-project.com/][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/lsp-fsharp.el][lsp-fsharp]]. * Features An in-depth list of features, how to use them, and their dependencies. From 30cd902d4d603ca1365e02991fa18d4a2b86cc0c Mon Sep 17 00:00:00 2001 From: Reed Mullanix Date: Fri, 5 Jul 2019 10:58:55 -0700 Subject: [PATCH 3/3] Make requested changes for F# lsp support --- modules/lang/fsharp/config.el | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/modules/lang/fsharp/config.el b/modules/lang/fsharp/config.el index b88f32bb2..071585737 100644 --- a/modules/lang/fsharp/config.el +++ b/modules/lang/fsharp/config.el @@ -5,18 +5,16 @@ (progn (setq fsharp-ac-intellisense-enabled nil) (setq lsp-fsharp-server-install-dir (concat doom-etc-dir "fsautocomplete/")) - (add-hook 'fsharp-mode-hook #'lsp)) - (progn - (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) - (map! :localleader - :map fsharp-mode-map - "q" #'fsharp-ac/stop-process - "t" #'fsharp-ac/show-tooltip-at-point))) + (add-hook 'fsharp-mode-local-vars-hook #'lsp!)) + (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)) + "l" #'fsharp-load-buffer-file + (:unless (featurep! +lsp) + "q" #'fsharp-ac/stop-process + "t" #'fsharp-ac/show-tooltip-at-point)))