Index: docs/clangd.rst =================================================================== --- /dev/null +++ docs/clangd.rst @@ -0,0 +1,94 @@ +============ +Clangd +============ + +.. contents:: + +.. toctree:: + :maxdepth: 1 + +:program:`clangd` is an implementation of the `Language Server Protocol `_ leveraging Clang. +Clangd's goal is to provide language "smartness" features like code completion, find references, etc. for clients such as C/C++ Editors. + +Using Clangd +================== + +:program:`Clangd` is not meant to be used by C/C++ developers directly but rather from a client implementing the protocol. +A client would be typically implemented in an IDE or an editor. + +At the moment, `Visual Studio Code `_ is mainly used +in order to test :program:`Clangd`` but more clients are likely to make use of :program:`Clangd`` in the +future as it matures and becomes a production quality tool. If you are interested +in trying :program:`Clangd`` in combination with Visual Studio Code, you can start by `building Clangd`_, +then open Visual Studio Code in the clangd-vscode folder and launch the extension. + +Building Clangd +================== + +You can follow the instructions for `building Clang `_ but "extra Clang Tool" is **not** optional. + +Current Status +================== + +Many features could be implemented in :program:`Clangd``. +Here is a list of features that could be useful with the status of whether or +not they are already implemented in :program:`Clangd`` and specified in the Language Server Protocol. +Note that for some of the features, it is not clear whether or not they should be part of the +Language Server Protocol, so those features might be eventually developed outside :program:`Clangd``. + ++-------------------------------------+------------+----------+ +| C/C++ Editor feature | LSP | Clangd | ++=====================================+============+==========+ +| Formatting | Yes | Yes | ++-------------------------------------+------------+----------+ +| Completion | Yes | Yes | ++-------------------------------------+------------+----------+ +| Diagnostics | Yes | Yes | ++-------------------------------------+------------+----------+ +| Fix-its | Yes | Yes | ++-------------------------------------+------------+----------+ +| Go to Definition | Yes | No | ++-------------------------------------+------------+----------+ +| Source hover | Yes | No | ++-------------------------------------+------------+----------+ +| Signature Help | Yes | No | ++-------------------------------------+------------+----------+ +| Find References | Yes | No | ++-------------------------------------+------------+----------+ +| Document Highlights | Yes | No | ++-------------------------------------+------------+----------+ +| Rename | Yes | No | ++-------------------------------------+------------+----------+ +| Code Lens | Yes | No | ++-------------------------------------+------------+----------+ +| Syntax and Semantic Coloring | No | No | ++-------------------------------------+------------+----------+ +| Code folding | No | No | ++-------------------------------------+------------+----------+ +| Call hierarchy | No | No | ++-------------------------------------+------------+----------+ +| Type hierarchy | No | No | ++-------------------------------------+------------+----------+ +| Organize Includes | No | No | ++-------------------------------------+------------+----------+ +| Quick Assist | No | No | ++-------------------------------------+------------+----------+ +| Extract Local Variable | No | No | ++-------------------------------------+------------+----------+ +| Extract Function/Method | No | No | ++-------------------------------------+------------+----------+ +| Hide Method | No | No | ++-------------------------------------+------------+----------+ +| Implement Method | No | No | ++-------------------------------------+------------+----------+ +| Gen. Getters/Setters | No | No | ++-------------------------------------+------------+----------+ + +Getting Involved +================== + +A good place for interested contributors is the `Clang developer mailing list `_. +If you're also interested in contributing patches to Clangd, take a look at the +`LLVM Developer Policy `_ and `Code Reviews `_ page. +Contributions of new features to the `Language Server Protocol `_ itself would also be very useful, +so that Clangd can eventually implement them in a conforming way. \ No newline at end of file Index: docs/index.rst =================================================================== --- docs/index.rst +++ docs/index.rst @@ -25,6 +25,7 @@ modularize pp-trace clang-rename + clangd Doxygen Documentation