1
0
Fork 0

Support hover for definitions

#201
pull/189/head^2
Felix Becker 2016-12-13 03:08:52 +01:00
parent 96ea8608d7
commit 0b61951a9c
2 changed files with 22 additions and 2 deletions

View File

@ -276,8 +276,13 @@ class TextDocument
return new Hover([]); return new Hover([]);
} }
$range = Range::fromNode($node); $range = Range::fromNode($node);
// Get the definition for whatever node is under the cursor if ($definedFqn = DefinitionResolver::getDefinedFqn($node)) {
$def = $this->definitionResolver->resolveReferenceNodeToDefinition($node); // Support hover for definitions
$def = $this->index->getDefinition($definedFqn);
} else {
// Get the definition for whatever node is under the cursor
$def = $this->definitionResolver->resolveReferenceNodeToDefinition($node);
}
if ($def === null) { if ($def === null) {
return new Hover([], $range); return new Hover([], $range);
} }

View File

@ -26,6 +26,21 @@ class HoverTest extends ServerTestCase
], $reference->range), $result); ], $reference->range), $result);
} }
public function testHoverForClassLikeDefinition()
{
// class TestClass implements TestInterface
// Get hover for TestClass
$definition = $this->getDefinitionLocation('TestClass');
$result = $this->textDocument->hover(
new TextDocumentIdentifier($definition->uri),
$definition->range->start
)->wait();
$this->assertEquals(new Hover([
new MarkedString('php', "<?php\nclass TestClass implements \\TestInterface"),
'Pariatur ut laborum tempor voluptate consequat ea deserunt.'
], $definition->range), $result);
}
public function testHoverForMethod() public function testHoverForMethod()
{ {
// $obj->testMethod(); // $obj->testMethod();