88use Phpactor \LanguageServer \Core \Diagnostics \DiagnosticsEngine ;
99use Phpactor \LanguageServer \Core \Service \ServiceProvider ;
1010use Phpactor \LanguageServer \Core \Workspace \Workspace ;
11+ use Phpactor \LanguageServer \Event \TextDocumentIncrementallyUpdated ;
1112use Phpactor \LanguageServer \Event \TextDocumentOpened ;
1213use Phpactor \LanguageServer \Event \TextDocumentSaved ;
1314use 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