diff --git a/src/PhpDocumentLoader.php b/src/PhpDocumentLoader.php index 728225d..9f6e672 100644 --- a/src/PhpDocumentLoader.php +++ b/src/PhpDocumentLoader.php @@ -19,7 +19,7 @@ class PhpDocumentLoader * * @var PhpDocument */ - private $documents = []; + public $documents = []; /** * @var ContentRetriever diff --git a/src/Server/TextDocument.php b/src/Server/TextDocument.php index aa76ec2..76062ff 100644 --- a/src/Server/TextDocument.php +++ b/src/Server/TextDocument.php @@ -265,7 +265,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 [];