diff --git a/src/CompletionProvider.php b/src/CompletionProvider.php index fd895683..8b5b5c00 100644 --- a/src/CompletionProvider.php +++ b/src/CompletionProvider.php @@ -162,10 +162,12 @@ public function provideCompletion(PhpDocument $doc, Position $pos, CompletionCon || ( $node instanceof Node\Statement\InlineHtml && ( - $context === null + $context !== null // Make sure to not suggest on the > trigger character in HTML - || $context->triggerKind === CompletionTriggerKind::INVOKED - || $context->triggerCharacter === '<' + && ( + $context->triggerKind === CompletionTriggerKind::INVOKED + || $context->triggerCharacter === '<' + ) ) ) || $pos == new Position(0, 0) diff --git a/tests/Server/TextDocument/CompletionTest.php b/tests/Server/TextDocument/CompletionTest.php index 80d3026c..2b4e9ffa 100644 --- a/tests/Server/TextDocument/CompletionTest.php +++ b/tests/Server/TextDocument/CompletionTest.php @@ -444,7 +444,7 @@ public function testHtmlWithoutPrefix() ], true), $items); } - public function testHtmlWithPrefix() + public function testHtmlWontBeProposedWithoutCompletionContext() { $completionUri = pathToUri(__DIR__ . '/../../../fixtures/completion/html_with_prefix.php'); $this->loader->open($completionUri, file_get_contents($completionUri)); @@ -452,7 +452,21 @@ public function testHtmlWithPrefix() new TextDocumentIdentifier($completionUri), new Position(0, 1) )->wait(); - $this->assertCompletionsListSubset(new CompletionList([ + + $this->assertEquals(new CompletionList([], true), $items); + } + + public function testHtmlWontBeProposedWithPrefixWithCompletionContext() + { + $completionUri = pathToUri(__DIR__ . '/../../../fixtures/completion/html_with_prefix.php'); + $this->loader->open($completionUri, file_get_contents($completionUri)); + $items = $this->textDocument->completion( + new TextDocumentIdentifier($completionUri), + new Position(0, 1), + new CompletionContext(CompletionTriggerKind::TRIGGER_CHARACTER, '<') + )->wait(); + + $this->assertEquals(new CompletionList([ new CompletionItem( '