Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Draft proposal for GSoC project for CDT/LSP integration

Hi,

I would like to propose a GSoC project for integrating CDT with the Language Server Protocol.

Please find below a draft of the proposal. I'm posting it here for comment before adding it to the 2018 GSoC proposals wiki page [1]. Any feedback is welcome!

========
= Eclipse CDT: Integration with the Language Server Protocol =

[https://www.eclipse.org/cdt/ Eclipse CDT] (C/C++ Development Tools) currently uses a homegrown C++ parser and code analysis engine for providing semantics-aware navigation, completion, refactoring, and other editing features. This parser has fallen behind in C++ language support (e.g. it currently has only partial C++14 support and no C++17 support) and is increasingly a maintenance burden.

The [https://microsoft.github.io/language-server-protocol/ Language Server Protocol] is a protocol that allows decoupling "language servers" that provide support for semantics-aware features, from editors / IDEs that provide the UI for these features. This facilitates reusing the parser and code analysis engine already present in a compiler like [https://clang.llvm.org/ clang], exposed via a language server. There is a project underway to support the client side of the protocol in Eclipse, [https://projects.eclipse.org/projects/technology.lsp4e LSP4E].

The goal of this GSoC project is to integrate Eclipse CDT with clang-based C/C++ language servers such as [https://clang.llvm.org/extra/clangd.html clangd] or [https://github.com/jacobdufault/cquery/ cquery]. 

Specific work that this could involve includes:

* Enhancements to LSP4E (support for new parts of the protocol, or enhancements to the implementation of existing parts), as motivated by CDT's needs
* Enhancements to CDT to make using the LSP integration smoother (e.g. project configuration, making use of existing settings)
* Enhancements to CDT to implement LSP protocol extensions that are specific to C/C++, or to a particular C/C++ language server (for example, cquery supports a protocol extension for semantic highlighting that might be neat to support in CDT)

Possible mentors: [mailto:zeratul976@xxxxxxxxxxx Nathan Ridge]
========

As mentioned, I would be happy to mentor this project. Of course, if someone else would prefer to mentor it, I would be happy with that too, so just let me know :)

Regards,
Nate

[1] https://wiki.eclipse.org/Google_Summer_of_Code_2018_Ideas

Back to the top