FsAutoComplete : My Outreachy Project

Hi, I’m working on FsAutoComplete (FSAC) project by F# Software Foundation under Outreachy and through this blog you will come to know more about FsAutoComplete (FSAC) and F# Software Foundation.

F#, a functional programming language, is used in a wide range of application areas and is supported by both an active open community and industry-leading companies providing professional tools. The mission of the F# Software Foundation is to promote and advance the F# programming language, including a diverse and international community of F# programmers.

FSAC is a backend service for rich editing such as autocomplete, tooltips, etc in editors. It can be hosted as command-line interface (stdio mode) or as http server (http mode), both using the same json protocol. As of now, FSAC is used by Emacs, Vim And Visual Studio Code.

My work as an intern involves creating FSAC support for .NET Template Engine i.e. to introduce commands and functions that allows a user to query and discover templates through the editor. For eg, querying for a list of installed templates and their details, creating new project from template such as a Console Application and to discover online templates to install them.

FSAC supports LSP(Language Server Protocol) as communication protocol for editors. LSP is specification of the communication between a client (editor) and a server that provides language tooling capabilities such as autocomplete, tooltips, etc. It reduces the m-times-n problem to the m-plus-n problem.

LSP

Due to the college curriculum I’m too used to programming at low level such as programming in C and C++. But after one month in my internship I have got a good hold at high level programming concepts such as writing functions that are reusable by multiple functions, utilising library functions to reduce the size of the code, etc.

At first it will always be a bit intimidating to work on projects with large codebases but once you dive into them there is no coming back and one definitely enjoys the journey!

Cheers! Happy coding! ;)

References: