Language Server Protocol
Le Language Server Protocol, généralement abrégé en LSP, est un protocole de communication entre les éditeurs de texte ou des environnements de développement et des serveurs qui fournissent des outils pour la programmation, comme l'auto-complétion de code, la coloration syntaxique ou la mise en évidence d'erreurs dans le code. Il est fondé sur le protocole JSON-RPC. Il a pour but de séparer le support de ces fonctionnalités pour différents langages et l'éditeur lui-même : ainsi, un éditeur implémentant le LSP peut tirer partie des nombreux serveurs LSP existants, et inversement[1]. Il fait aujourd'hui office de standard pour le support de ce type de fonctionnalités[2],[3].
Historique
[modifier | modifier le code]Le LSP a été initialement développé pour Visual Studio Code sous l'égide de Microsoft, lors de l'intégration de fonctionnalités intelligentes pour C# et Typescript au sein de l'éditeur. Ce développement a rapidement inclus Codenvy, développant l'éditeur Eclipse Che, ainsi que Red Hat. Le protocole est officiellement dévoilé en 2016[4],[5].
Implémentation
[modifier | modifier le code]Le protocole se fonde sur l'échange de messages au format JSON entre un client (typiquement un éditeur de texte) et un serveur (un logiciel dédié, tournant généralement sur la même machine) ; ces échanges suivent le protocole JSON-RPC. Concrètement, le client envoie des requêtes au serveur, par exemple lorsque l'utilisateur édite le code, ou qu'il souhaite effectuer une action spécifique ; le serveur peut ensuite y répondre, par exemple en fournissant une liste d'erreurs dans le code[6].
Les actions possibles pour un serveur LSP donné sont définies par ses « capacités » (capabilities), qui indiquent au client le type de requête qu'il peut traiter. Ces capacités varient selon le langage et le serveur exact. Par exemple, la capacité textDocument/completion indique que le serveur est capable de fournir de l'auto-complétion[6].
Notes et références
[modifier | modifier le code]- ↑ Federico Bruzzone, Walter Cazzola et Luca Favalli, « Code Less to Code More: Streamlining Language Server Protocol and type system development for language families », Journal of Systems and Software, vol. 231, , p. 112554 (ISSN 0164-1212, DOI 10.1016/j.jss.2025.112554, lire en ligne, consulté le )
- ↑ (en) Dominik Bork et Philip Langer, « Language Server Protocol: An Introduction to the Protocol, its Use, and Adoption for Web Modeling Tools », Enterprise Modelling and Information Systems Architectures (EMISAJ) - International Journal of Conceptual Modeling, vol. 18, , p. 9:1–16 (ISSN 1866-3621, DOI 10.18417/emisa.18.9, lire en ligne, consulté le )
- ↑ Nadeeshaan Gunasinghe et Nipuna Marcus, Language server protocol and implementation: supporting language-smart editing and programming tools, Apress, coll. « Springer eBook Collection », (ISBN 978-1-4842-7791-1 et 978-1-4842-7792-8)
- ↑ (en-US) Alex Handy, « Codenvy, Microsoft and Red Hat collaborate on Language Server Protocol », sur SD Times, (consulté le )
- ↑ « Red Hat, Codenvy and Microsoft Collaborate on Language Server Protocol », sur www.redhat.com, (consulté le )
- « Overview », sur microsoft.github.io (consulté le )