Caractéristiques
Le Language Server Protocol (LPS) est un protocole ouvert entre les éditeurs de code et les serveurs pour fournir des outils d'intelligence de code tels que la complétion de code et la mise en évidence de la syntaxe. Ce projet implémente un serveur de langage pour Postgres, améliorant de manière significative l'expérience du développeur au sein de son éditeur favori en ajoutant :
- Mise en évidence sémantique
- Diagnostic des erreurs de syntaxe
- Affichage des commentaires SQL au survol
- L'auto-complétion
- Actions de code telles que Execute the statement under the cursor, ou Execute the current file
- Formatage du code configurable
- ... et beaucoup d'autres
Motivation
Malgré la popularité croissante de Postgres, le support du PL/pgSQL dans les IDE et les éditeurs est limité. Bien qu'il existe quelques serveurs génériques de langage SQL1 offrant la syntaxe Postgres comme une "option (flavor)" au sein de l'analyseur, ils ne sont généralement pas à la hauteur en raison de la syntaxe complexe et en constante évolution de PostgreSQL. Il existe quelques IDE2 propriétaires qui fonctionnent bien, mais les fonctionnalités ne sont disponibles que dans l'IDE concerné.
Ce serveur de langage est conçu pour supporter Postgres, et uniquement Postgres. Le serveur utilise libpg_query, ce qui permet d'exploiter la source PostgreSQL pour analyser le code SQL de manière fiable. L'utilisation de Postgres dans un serveur de langage peut sembler peu conventionnelle, mais c'est le seul moyen fiable d'analyser toutes les requêtes PostgreSQL valides. Bien que libpg_query ait été construit pour exécuter du SQL, et non pour construire un serveur de langage, toutes les faiblesses ont été atténuées avec succès dans le parser crate.
Une fois que l'analyseur syntaxique sera stable et qu'un modèle de données robuste et évolutif sera mis en œuvre, le serveur de langage fournira non seulement des fonctionnalités de base telles que la mise en évidence sémantique, la complétion de code et le diagnostic des erreurs de syntaxe, mais servira également d'interface utilisateur pour tous les grands outils de l'écosystème Postgres.
Feuille de route
Il s'agit d'une preuve de concept pour la construction d'un arbre syntaxique concret et d'un arbre syntaxique abstrait à partir d'un code source PostgreSQL potentiellement malformé. Le crate postgres_lsp a été créé pour prouver qu'il fonctionne de bout en bout, et n'est qu'un serveur de langage très basique avec une mise en évidence sémantique et des diagnostics d'erreur. Avant d'aller plus loin dans le développement des fonctionnalités, ils doivent effectuer un travail de fond :
- Terminer l'analyseur
- Mettre en œuvre un modèle de données robuste et évolutif
- Configurer correctement le langage server
- Mettre en œuvre les fonctionnalités de base du langage serveur
- Intégrer tous les outils open source existants
- Construire les pièces manquantes
- (Peut-être) Prendre en charge les fonctionnalités avancées avec la gestion déclarative des schémas
Source : GitHub
Et vous ?
Quel est votre avis sur cette annonce ?
Pensez-vous que cette nouvelle solution pourrait vous intéresser ?
Pensez-vous que cette nouvelle solution pourra rendre PostGreSQL encore plus populaire ou qu'il s'agit au contraire d'une annonce sans réelle importance ? Pourquoi ?
Voir aussi :
Microsoft annonce la sortie du kit de développement C# pour Visual Studio Code
Qt 6.3 est disponible avec une prise en charge améliorée de Wayland, et ajoute le module Qt Language Server
Présentation de la première release de Rust Language Server, un kit d'outils de programmation en Rust et bien d'autres langages, par Nick Cameron