diff --git a/package-lock.json b/package-lock.json index c370a682..e6c9c4f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,15 +11,15 @@ "dev": true }, "monaco-editor-core": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.15.5.tgz", - "integrity": "sha512-kM3KHRjj16cFdK5Z0EppKUu793JVMpsEesBSWlqdgrxcmjyDMXV6xK0oatPcAYp3eOfbbyjPhruxDXj85FKyIg==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.16.0.tgz", + "integrity": "sha512-8tm8vq0SVuQ+VXZFtPIEIronK3102SYCWe8wviWu/5TV4zlDQcf4YdzI6A4CrNqbUc46dD0ngijaKWoRSViI8g==", "dev": true }, "monaco-languages": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.6.0.tgz", - "integrity": "sha512-LBEWj8tngYwsq4kasQr+dIhnO4xUIEN36ns+cRepWAQiXZnzcrZ84gFHXm8f4mR4tssxvHVU5Vw7xMUYro6h3g==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/monaco-languages/-/monaco-languages-1.7.0.tgz", + "integrity": "sha512-2YrYlkCF/g2H0PDt/ERax2IStaihZ17v1JkYnj2xEALYNah0pbQvGH9gXJvdVx0EpBoSRmxVnrwwM2oBWWOjSQ==", "dev": true }, "monaco-plugin-helpers": { @@ -52,9 +52,9 @@ "dev": true }, "typescript": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.2.tgz", - "integrity": "sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==", + "version": "3.3.3333", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", + "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 9e0cfc47..0799e310 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,11 @@ "url": "https://github.com/Microsoft/monaco-typescript/issues" }, "devDependencies": { - "monaco-editor-core": "^0.15.5", - "monaco-languages": "^1.6.0", + "monaco-editor-core": "^0.16.0", + "monaco-languages": "^1.7.0", "monaco-plugin-helpers": "^1.0.2", "requirejs": "^2.3.6", - "typescript": "^3.2.2", + "typescript": "^3.3.3333", "uglify-js": "^3.4.9" } } diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index ccc50c85..cc76509c 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -213,6 +213,7 @@ export class SuggestAdapter extends Adapter implements monaco.languages.Completi provideCompletionItems(model: monaco.editor.IReadOnlyModel, position: Position, _context: monaco.languages.CompletionContext, token: CancellationToken): Thenable { const wordInfo = model.getWordUntilPosition(position); + const wordRange = new Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn); const resource = model.uri; const offset = this._positionToOffset(resource, position); @@ -223,9 +224,17 @@ export class SuggestAdapter extends Adapter implements monaco.languages.Completi return; } let suggestions: MyCompletionItem[] = info.entries.map(entry => { + let range = wordRange; + if (entry.replacementSpan) { + const p1 = model.getPositionAt(entry.replacementSpan.start); + const p2 = model.getPositionAt(entry.replacementSpan.start + entry.replacementSpan.length); + range = new Range(p1.lineNumber, p1.column, p2.lineNumber, p2.column); + } + return { uri: resource, position: position, + range: range, label: entry.name, insertText: entry.name, sortText: entry.sortText,