Language Server Protocol
protocole de communication
From Wikipedia, the free encyclopedia
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
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
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].