Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Language Server Protocol #108

Closed
remisharrock opened this issue May 19, 2018 · 6 comments
Closed

Language Server Protocol #108

remisharrock opened this issue May 19, 2018 · 6 comments

Comments

@remisharrock
Copy link

remisharrock commented May 19, 2018

ACE est un très bon éditeur, mais ne supporte pas le Language Server Protocol. L'editeur Monaco le supporte par exemple:

https://typefox.io/teaching-the-language-server-protocol-to-microsofts-monaco-editor

Ceci permet d'avoir des fonctionnalités du style "intellisense" d'autocompletion intelligentes comme le montre la démo ici http://52.29.251.2/calcmonaco/

En interne, voici l'explication:

The Monaco Editor Language Client provides a language client that establishes communication between Monaco editors and language servers over JSON-RPC and the VSCode WebSocket JSON-RPC package enables JSON-RPC to work over web sockets.

Une équivalence pour ACE existe-t-elle ?

@epixode
Copy link

epixode commented May 19, 2018

Je pense qu'il ne faut pas perdre de vue l'objectif pédagogique de codecast. Intégrer de l'autocomplétion "intelligente", dont l'objectif est un gain de productivité, ne me semble pas contribuer de manière significative à l'objectif principal qui est de comprendre finement ce que l'on écrit.

@remisharrock
Copy link
Author

remisharrock commented May 19, 2018

Oui pour l'autocompletion, après il y a aussi d'autres avantages au support du Language Server Protocol pour l'apprentissage de la programmation:

  • vérification de la syntaxe : on peut souligner en rouge, jaune qui peut guider pour l'apprentissage.
  • semantic coloration (en plus de syntaxic coloration): ça j'adore ! C'est très bon pédagogiquement, exemple https://medium.com/@evnbr/coding-in-color-3a6db2743a1e (implémentation du serveur pour le langage C ici https://github.com/cquery-project/cquery )
  • explication des fonctions quand on passe la souris dessus: description, paramètres etc...
  • jump to definition: pour arriver directement à la déclaration d'une variable, d'une fonction
  • find references: pour arriver directement à l'appel d'une fonction
  • recherche de symboles
  • renommer/refactoring intelligent (ça c'est plus productivité que pédagogique)
  • surement d'autres que j'oublie

Il me semble que sur le long terme, avoir le support du Language Server Protocol est une bonne chose pédagogiquement :)

@remisharrock remisharrock changed the title Monaco Editor + Language Server Protocol Language Server Protocol May 19, 2018
@epixode
Copy link

epixode commented May 19, 2018

Ce n'est pas un mince effort. Non seulement en terme de dev (supporter l'enregistrement de toutes les interactions nouvelles avec l'éditeur [qui ne le prévoit pas forcement] et avec le language server), mais aussi en terme d'infrastructure (pour chaque instance de codecast ouverte, il faut une instance de clangd [ou du language server propriétaire de Microsoft, j'imagine?] sur un serveur dans le cloud, donc un usage très important (coûteux) de ressources.

J'ai brièvement regardé la documentation de l'API de Monaco, elle n'est pas de bonne qualité, ce qui n'aiderait pas. Il semble très récent, en version 0.13.1, donc sans garantie de pérennité de l'API. Je comprends le désir de plus de fonctionnalités et d'outils à la pointe, mais c'est pas trivial à intégrer.

@remisharrock
Copy link
Author

Tout à fait!
Je fais de la veille technologique pour le futur à long terme de Codecast ;)
ACE n'a pas avancé de ce côté: ajaxorg/ace#3124
Pour répondre à ta question, il existe de nombreuses implémentations du langage server protocol pour tous les langages de programmation. Tout est open source.
Un exemple pour le langage c est le serveur cquery https://github.com/cquery-project/cquery
Il supporte notamment le "semantic highlighting" avec support du rainbow semantic highlighting

Ok pour Monaco, il faut tout de même continuer à faire de la veille sur Language Server Protocol qui est maintenant un standard incontournable.

@mathias-hiron
Copy link
Contributor

Pour les discussions sur les évolutions futures possibles de codecast, nous utiliserons un document séparé, et non des issues github.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants