Skip to content

Commit

Permalink
[clangd] Add documentation page
Browse files Browse the repository at this point in the history
Summary:
Add a simple documentation page for Clangd.
This will be useful for interested users and contributors to get basic information about how
to get started and the progress of Clangd.

Reviewers: krasimir, bkramer

Reviewed By: krasimir

Subscribers: Prazek, jbcoe, JDevlieghere, mgehre, JonasToth, kromanenkov, xazax.hun, cfe-commits

Tags: #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D31887

llvm-svn: 302191
  • Loading branch information
MarkZ3 committed May 4, 2017
1 parent 9ed65da commit 25624f4
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 0 deletions.
106 changes: 106 additions & 0 deletions clang-tools-extra/docs/clangd.rst
@@ -0,0 +1,106 @@
============
Clangd
============

.. contents::

.. toctree::
:maxdepth: 1

:program:`Clangd` is an implementation of the `Language Server Protocol
<https://github.com/Microsoft/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 <https://code.visualstudio.com/>`_ 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
<https://clang.llvm.org/get_started.html>`_ but "extra Clang tools" 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
<http://lists.llvm.org/mailman/listinfo/cfe-dev>`_.
If you're also interested in contributing patches to :program:`Clangd`, take a
look at the `LLVM Developer Policy
<http://llvm.org/docs/DeveloperPolicy.html>`_ and `Code Reviews
<http://llvm.org/docs/Phabricator.html>`_ page. Contributions of new features
to the `Language Server Protocol
<https://github.com/Microsoft/language-server-protocol>`_ itself would also be
very useful, so that :program:`Clangd` can eventually implement them in a
conforming way.
1 change: 1 addition & 0 deletions clang-tools-extra/docs/index.rst
Expand Up @@ -25,6 +25,7 @@ Contents
modularize
pp-trace
clang-rename
clangd


Doxygen Documentation
Expand Down

0 comments on commit 25624f4

Please sign in to comment.