The FsAutoComplete project (FSAC) provides a backend service for rich editing or intellisense features for editors. It implements the Language Server Protocol.
Currently, it is used by the following extensions:
And it can be used with the following editors, by simply installing FsAutoComplete directly:
dotnet tool install --global fsautocomplete
It is based on:
- FSharp.Compiler.Service for F# language info.
- Ionide.ProjInfo for project/solution management.
- FSharpLint for the linter feature.
- Fantomas for F# code formatting.
FsAutoComplete runs on .NET 10. Install the .NET 10 SDK, which includes the .NET 10 runtime.
Your projects do not need to change for this:
- They can keep targeting
net8.0,net9.0or any other framework. - A
global.jsonthat pins the .NET 8 or 9 SDK keeps working. FsAutoComplete then loads the projects with that SDK, as long as the .NET 10 runtime is installed as well.
Why .NET 10: FsAutoComplete runs F# analyzers in its own process. FSharp.Analyzers.SDK targets .NET 10 since version 0.38, and an analyzer is only loaded when it was built against the same version of the SDK as FsAutoComplete, so FsAutoComplete targets .NET 10 too. The changelog names the version of FSharp.Analyzers.SDK that each release hosts.
When you install FsAutoComplete with an older SDK, you get a placeholder instead. It says to install the .NET 10 SDK when it starts, and editors show that as the error of the language server. Install the .NET 10 SDK, then install FsAutoComplete again, for example with dotnet tool update --global fsautocomplete.
- Building, Testing, and Releasing - See CONTRIBUTING.md for build requirements, build commands, testing instructions, and the release process.
- OpenTelemetry -See the OpenTelemetry documentation for instructions on enabling and visualizing distributed traces.
- LSP endpoints, settings and more - See the Communication Protocol documentation for details on supported LSP endpoints, custom endpoints, notifications, startup options, initialization options, and settings.
The maintainers of this repository are:
Previous maintainers:
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
The library is available under MIT license, which allows modification and redistribution for both commercial and non-commercial purposes.
I want your help. No really, I do.
There might be a little voice inside that tells you you're not ready; that you need to do one more tutorial, or learn another framework, or write a few more blog posts before you can help me with this project.
I assure you, that's not the case.
And you don't just have to write code. You can help out by writing documentation, tests, or even by giving feedback about this work. (And yes, that includes giving feedback about the contribution guidelines.)
Thank you for contributing!