[GSoC] "Language Server Protocol in D" - progress and update thread
Manish Khurana
mkmanishkhurana98 at gmail.com
Wed May 29 10:17:43 UTC 2019
Hi everyone,
I have started working on my GSoC-2019 project "Language Server
Protocol in D". This newsgroup thread is for posting progress and
updates about the project.
-----------------
About the project
-----------------
Language Server Protocol (LSP) is JSON-RPC based protocol for use
between source code editors or IDEs and servers that provide
programming language-specific features. The idea behind the LSP
is to standardize the protocol for how tools and servers
communicate, so a single Language Server can be re-used in
multiple development tools, and tools can support languages with
minimal effort.
As of now, almost every language has a language server and almost
all editors and IDEs are either having or developing support for
LSP. D Language also has two language servers - DLS and DCD.
Although these two language servers work very well, but they use
libdparse library for lexing and parsing D source code and hence
they still lack in some of the features like semantic analysis on
AST and D's very powerful Compile-Time Function Evaluation (CTFE).
Recent developments in DMD made it available to be used as a
library. This means the compiler can be reused and tools don’t
have to re-implement complex features like CTFE. This project
aims to develop a new fully-functional language server for D
programming language using dmd library.
More details about project and project roadmap could be found at
https://docs.google.com/document/d/15ogvupEgfDgX5RqZOqSbO4-Hz7gWOxIONB6H46tjbIc/edit?usp=sharing
----------
This Month
----------
* Improve dmd library to be properly used as a library.
* Implement protocol specifications by re-using code from DLS or
serve-d.
* Add linting (i.e. showing error messages) support.
* Write test for linting.
----------
Next Month
----------
* Implement completion request as per specification. Use dmd
library to get symbols matching the provided input.
* Implement go-to definition request as per specification. Use
dmd library to find the location of symbol definition in the
source files.
* Write tests for completion and go-to-definition requests.
--------
Blockers
--------
So far no blockers have been encountered.
More information about the Digitalmars-d
mailing list