diff --git a/src/PhpDocumentLoader.php b/src/PhpDocumentLoader.php index 57a7e9c..e683180 100644 --- a/src/PhpDocumentLoader.php +++ b/src/PhpDocumentLoader.php @@ -20,7 +20,7 @@ class PhpDocumentLoader * * @var PhpDocument */ - private $documents = []; + public $documents = []; /** * @var ContentRetriever diff --git a/src/Server/TextDocument.php b/src/Server/TextDocument.php index 5a2819e..ff3646f 100644 --- a/src/Server/TextDocument.php +++ b/src/Server/TextDocument.php @@ -261,7 +261,15 @@ class TextDocument public function definition(TextDocumentIdentifier $textDocument, Position $position): Promise { return coroutine(function () use ($textDocument, $position) { - $document = yield $this->documentLoader->getOrLoad($textDocument->uri); + $documentLoader = $this->documentLoader;//->getOrLoad($textDocument->uri); + $document = null; + if (isset($documentLoader->documents[$textDocument->uri])) { + $document = $documentLoader->documents[$textDocument->uri]; + } else { + $document = yield $documentLoader->load($textDocument->uri); + $documentLoader->documents[$textDocument->uri] = $document; + } + $node = $document->getNodeAtPosition($position); if ($node === null) { return [];