Skip to content

Commit 8074481

Browse files
committed
Support for incremntal updates in diagnostic provider
1 parent da1d994 commit 8074481

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
"scripts": {
5353
"integrate": [
5454
"./vendor/bin/phpunit",
55-
"./vendor/bin/phpstan analyze",
55+
"./vendor/bin/phpstan --memory-limit=-1 analyze",
5656
"./vendor/bin/php-cs-fixer fix"
5757
]
5858
},

lib/Service/DiagnosticsService.php

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Phpactor\LanguageServer\Core\Diagnostics\DiagnosticsEngine;
99
use Phpactor\LanguageServer\Core\Service\ServiceProvider;
1010
use Phpactor\LanguageServer\Core\Workspace\Workspace;
11+
use Phpactor\LanguageServer\Event\TextDocumentIncrementallyUpdated;
1112
use Phpactor\LanguageServer\Event\TextDocumentOpened;
1213
use Phpactor\LanguageServer\Event\TextDocumentSaved;
1314
use Phpactor\LanguageServer\Event\TextDocumentUpdated;
@@ -56,6 +57,10 @@ public function getListenersForEvent(object $event): iterable
5657
yield [$this, 'enqueueUpdate'];
5758
}
5859

60+
if ($this->lintOnUpdate && $event instanceof TextDocumentIncrementallyUpdated) {
61+
yield [$this, 'enqueueUpdate'];
62+
}
63+
5964
if ($this->lintOnSave && $event instanceof TextDocumentSaved) {
6065
yield [$this, 'enqueueSave'];
6166
}
@@ -66,14 +71,20 @@ public function opened(TextDocumentOpened $opened): void
6671
$this->engine->enqueue($opened->textDocument());
6772
}
6873

69-
public function enqueueUpdate(TextDocumentUpdated $update): void
74+
public function enqueueUpdate(TextDocumentUpdated|TextDocumentIncrementallyUpdated $update): void
7075
{
71-
$item = new TextDocumentItem(
72-
$update->identifier()->uri,
73-
'php',
74-
$update->identifier()->version,
75-
$update->updatedText()
76-
);
76+
$item = (function (TextDocumentUpdated|TextDocumentIncrementallyUpdated $event) {
77+
if ($event instanceof TextDocumentUpdated) {
78+
return new TextDocumentItem(
79+
$event->identifier()->uri,
80+
'php',
81+
$event->identifier()->version,
82+
$event->updatedText()
83+
);
84+
}
85+
86+
return $this->workspace->get($event->identifier()->uri);
87+
})($update);
7788

7889
if ($this->clearOnUpdate) {
7990
$this->engine->clear($item);

0 commit comments

Comments
 (0)