Event language
UI language
<p>Have you ever thought about writing code in a tool that doesn't recognize the programming language you're using? Nowadays, we cannot even imagine working on a project with a code editor that doesn't support syntax highlighting, autocompletion, linting, go-to, and hover functionalities. In addition to the increasing speed of programming languages' evolution and the creation of new ones, many code editors and IDEs have also been developed in the last decade. But, all these code editors share a common problem: The problem of integrating code support with the functionalities mentioned above as a sophisticated extension. Technically, someone has to write an extension for each programming language per code editor, repeating the same underlying logic. The Language Server Protocol (LSP) answers this M * N problem: Considering M languages and N editors.</p><p>In this talk, we will learn how the Language Server Protocol (LSP) changes this M * N problem into an M + N problem by providing language support services in a decentralized manner. We will explore how a language server contains a deep understanding of a specific language while the LSP provides the communication between the language server and extension in code editors. More importantly, we will learn how to develop a language server efficiently using Ansible Language Server (ALS) as an example, followed by a demo. A vital part of the presentation will be to discuss how this beautiful concept of language server combines with the open-source culture and see how the community has already developed extensions for vim and emacs around the ansible language server. By the end of this talk, you will have a clear understanding of the core concept of a language server and the knowledge necessary to start developing one. You will also have sufficient resources to build an extension or plugin for your favorite code editor based on an existing language server.</p><p>There is no prerequisite for you to be able to follow this talk; all you need is a passion for developing programming language tools.</p>