diff --git a/src/ComposerScripts.php b/src/ComposerScripts.php index c84a176..a1d7473 100644 --- a/src/ComposerScripts.php +++ b/src/ComposerScripts.php @@ -44,7 +44,7 @@ class ComposerScripts } $uris = yield $finder->find("$stubsLocation/**/*.php"); - + $uris = []; foreach ($uris as $uri) { echo "Parsing $uri\n"; $content = yield $contentRetriever->retrieve($uri); diff --git a/src/LanguageServer.php b/src/LanguageServer.php index 8fe9ec1..10dd6ec 100644 --- a/src/LanguageServer.php +++ b/src/LanguageServer.php @@ -237,7 +237,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher $this->composerLock, $this->composerJson ); - $indexer->index()->otherwise('\\LanguageServer\\crash'); + yield $indexer->index()->otherwise('\\LanguageServer\\crash'); } 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 [];