From 17af44555cdb7aa8a9eb891dacd1bd73592130b6 Mon Sep 17 00:00:00 2001 From: jens1o Date: Tue, 6 Feb 2018 20:34:26 +0100 Subject: [PATCH] fix proposing php start tag when completion context is not given by the LS client fixes https://github.com/felixfbecker/php-language-server/issues/372 --- src/CompletionProvider.php | 8 +++++--- tests/Server/TextDocument/CompletionTest.php | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/CompletionProvider.php b/src/CompletionProvider.php index fd89568..8b5b5c0 100644 --- a/src/CompletionProvider.php +++ b/src/CompletionProvider.php @@ -162,10 +162,12 @@ class CompletionProvider || ( $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 80d3026..2b4e9ff 100644 --- a/tests/Server/TextDocument/CompletionTest.php +++ b/tests/Server/TextDocument/CompletionTest.php @@ -444,7 +444,7 @@ class CompletionTest extends TestCase ], 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 @@ class CompletionTest extends TestCase 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( '