[clangd] Implement textDocument/hover
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Fri, 16 Feb 2018 21:38:15 +0000 (21:38 +0000)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Fri, 16 Feb 2018 21:38:15 +0000 (21:38 +0000)
commit3e618ed8f0cead7afa8f5d48e2fd2f707b5740d2
tree50e907d80bfb82faf362c44165af34e254ebadb8
parent27b9ac2372e5340fe92196f47cb31ed72d367aa4
[clangd] Implement textDocument/hover

Summary: Implemention of textDocument/hover as described in LSP definition.

This patch adds a basic Hover implementation.  When hovering a variable,
function, method or namespace, clangd will return a text containing the
declaration's scope, as well as the declaration of the hovered entity.
For example, for a variable:

  Declared in class Foo::Bar

  int hello = 2

For macros, the macro definition is returned.

This patch doesn't include:

- markdown support (the client I use doesn't support it yet)
- range support (optional in the Hover response)
- comments associated to variables/functions/classes

They are kept as future work to keep this patch simpler.

I added tests in XRefsTests.cpp.  hover.test contains one simple
smoketest to make sure the feature works from a black box perspective.

Reviewers: malaperle, krasimir, bkramer, ilya-biryukov

Subscribers: sammccall, mgrang, klimek, rwols, ilya-biryukov, arphaman, cfe-commits

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

Signed-off-by: Simon Marchi <simon.marchi@ericsson.com>
Signed-off-by: William Enright <william.enright@polymtl.ca>
llvm-svn: 325395
14 files changed:
clang-tools-extra/clangd/ClangdLSPServer.cpp
clang-tools-extra/clangd/ClangdLSPServer.h
clang-tools-extra/clangd/ClangdServer.cpp
clang-tools-extra/clangd/ClangdServer.h
clang-tools-extra/clangd/Protocol.cpp
clang-tools-extra/clangd/Protocol.h
clang-tools-extra/clangd/ProtocolHandlers.cpp
clang-tools-extra/clangd/ProtocolHandlers.h
clang-tools-extra/clangd/XRefs.cpp
clang-tools-extra/clangd/XRefs.h
clang-tools-extra/test/clangd/hover.test [new file with mode: 0644]
clang-tools-extra/test/clangd/initialize-params-invalid.test
clang-tools-extra/test/clangd/initialize-params.test
clang-tools-extra/unittests/clangd/XRefsTests.cpp