diff --git a/extensions/php/src/features/completionItemProvider.ts b/extensions/php/src/features/completionItemProvider.ts index c948c8357ad..601944f277c 100644 --- a/extensions/php/src/features/completionItemProvider.ts +++ b/extensions/php/src/features/completionItemProvider.ts @@ -5,12 +5,12 @@ 'use strict'; -import { CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Position, Range, TextEdit, workspace } from 'vscode'; +import { CompletionItemProvider, CompletionItem, CompletionItemKind, CancellationToken, TextDocument, Position, Range, TextEdit, workspace, CompletionContext } from 'vscode'; import phpGlobals = require('./phpGlobals'); export default class PHPCompletionItemProvider implements CompletionItemProvider { - public provideCompletionItems(document: TextDocument, position: Position, _token: CancellationToken): Promise { + public provideCompletionItems(document: TextDocument, position: Position, _token: CancellationToken, context: CompletionContext): Promise { let result: CompletionItem[] = []; let shouldProvideCompletionItems = workspace.getConfiguration('php').get('suggest.basic', true); @@ -24,6 +24,14 @@ export default class PHPCompletionItemProvider implements CompletionItemProvider range = new Range(position, position); } + if (context.triggerCharacter === '>') { + const twoBeforeCursor = new Position(position.line, Math.max(0, position.character - 2)); + const previousTwoChars = document.getText(new Range(twoBeforeCursor, position)); + if (previousTwoChars !== '->') { + return Promise.resolve(result); + } + } + var added: any = {}; var createNewProposal = function (kind: CompletionItemKind, name: string, entry: phpGlobals.IEntry | null): CompletionItem { var proposal: CompletionItem = new CompletionItem(name);