1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
---@brief
---
--- https://github.com/fsharp/FsAutoComplete
---
--- Language Server for F# provided by FsAutoComplete (FSAC).
---
--- FsAutoComplete requires the [dotnet-sdk](https://dotnet.microsoft.com/download) to be installed.
---
--- The preferred way to install FsAutoComplete is with `dotnet tool install --global fsautocomplete`.
---
--- Instructions to compile from source are found on the main [repository](https://github.com/fsharp/FsAutoComplete).
---
--- You may also need to configure the filetype as Vim defaults to Forth for `*.fs` files:
---
--- `autocmd BufNewFile,BufRead *.fs,*.fsx,*.fsi set filetype=fsharp`
---
--- This is automatically done by plugins such as [PhilT/vim-fsharp](https://github.com/PhilT/vim-fsharp), [fsharp/vim-fsharp](https://github.com/fsharp/vim-fsharp), and [adelarsq/neofsharp.vim](https://github.com/adelarsq/neofsharp.vim).
---
local util = require 'lspconfig.util'
---@type vim.lsp.Config
return {
cmd = { 'fsautocomplete', '--adaptive-lsp-server-enabled' },
root_dir = function(bufnr, on_dir)
local fname = vim.api.nvim_buf_get_name(bufnr)
on_dir(util.root_pattern('*.sln', '*.fsproj', '.git')(fname))
end,
filetypes = { 'fsharp' },
init_options = {
AutomaticWorkspaceInit = true,
},
-- this recommended settings values taken from https://github.com/ionide/FsAutoComplete?tab=readme-ov-file#settings
settings = {
FSharp = {
keywordsAutocomplete = true,
ExternalAutocomplete = false,
Linter = true,
UnionCaseStubGeneration = true,
UnionCaseStubGenerationBody = 'failwith "Not Implemented"',
RecordStubGeneration = true,
RecordStubGenerationBody = 'failwith "Not Implemented"',
InterfaceStubGeneration = true,
InterfaceStubGenerationObjectIdentifier = 'this',
InterfaceStubGenerationMethodBody = 'failwith "Not Implemented"',
UnusedOpensAnalyzer = true,
UnusedDeclarationsAnalyzer = true,
UseSdkScripts = true,
SimplifyNameAnalyzer = true,
ResolveNamespaces = true,
EnableReferenceCodeLens = true,
},
},
}
|