From 7605b1802a367241e3adb966a6cfb368452e7bc0 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Mon, 4 Mar 2019 21:42:21 +0100 Subject: [PATCH] update and adopt --- package-lock.json | 48 +++++++++++++++++------------------ package.json | 10 ++++---- src/languageFeatures.ts | 56 +++++++++++------------------------------ 3 files changed, 44 insertions(+), 70 deletions(-) diff --git a/package-lock.json b/package-lock.json index 048ca553..e8391cd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,15 +11,15 @@ "dev": true }, "monaco-editor-core": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.15.0.tgz", - "integrity": "sha512-s1zuo+p6Gl6IC4WJP6HBkr4pWULm+HdFfacB8vOFPQLLi2oJseO20UuSkxYuZTUJQIjvhNrQfLNAmPKLZaf7tg==", + "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.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", - "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", + "version": "3.3.3333", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", + "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", "dev": true }, "uglify-js": { @@ -68,32 +68,32 @@ } }, "vscode-html-languageservice": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-2.1.5.tgz", - "integrity": "sha512-DXgotbJaLgD+IuhzCdLenBb+G3MKa8P8FpDc2LvhAbTm6QR8Dl3McrEGIYQi2/dhmB6NJxJgwZtUF5A9aiuRrg==", + "version": "3.0.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.0.0-next.2.tgz", + "integrity": "sha512-m6tl9Zcz7EoJfL+86BV7uVcCdcdBIZ4uJGWy82JyFc3iHSOcRAKKKUoxL9ReF582nnIqK60oAltwSRStmPksQA==", "dev": true, "requires": { - "vscode-languageserver-types": "^3.10.0", - "vscode-nls": "^3.2.4", - "vscode-uri": "^1.0.5" + "vscode-languageserver-types": "^3.14.0", + "vscode-nls": "^4.0.0", + "vscode-uri": "^1.0.6" } }, "vscode-languageserver-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.10.0.tgz", - "integrity": "sha512-vxmCsVZGwq8X40SuLP8Ix7V0rq5V/7iQUjRVe2Oxm+TbmjxtjK4dpHHXQCUawjA4fhPA9FwjSRbDhbvQmYCfMw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", + "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==", "dev": true }, "vscode-nls": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-3.2.4.tgz", - "integrity": "sha512-FTjdqa4jDDoBjJqr36O8lmmZf/55kQ2w4ZY/+GL6K92fq765BqO3aYw21atnXUno/P04V5DWagNl4ybDIndJsw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.0.0.tgz", + "integrity": "sha512-qCfdzcH+0LgQnBpZA53bA32kzp9rpq/f66Som577ObeuDlFIrtbEJ+A/+CCxjIh4G8dpJYNCKIsxpRAHIfsbNw==", "dev": true }, "vscode-uri": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.5.tgz", - "integrity": "sha1-O4majvccN/MFTXm9vdoxx7828g0=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.6.tgz", + "integrity": "sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww==", "dev": true } } diff --git a/package.json b/package.json index 90c833c1..f4c65c99 100644 --- a/package.json +++ b/package.json @@ -19,13 +19,13 @@ "url": "https://github.com/Microsoft/monaco-editor/issues" }, "devDependencies": { - "monaco-editor-core": "0.15.0", - "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.1.6", + "typescript": "^3.3.3333", "uglify-js": "^3.4.9", - "vscode-html-languageservice": "^2.1.5", - "vscode-languageserver-types": "^3.10.0" + "vscode-html-languageservice": "3.0.0-next.2", + "vscode-languageserver-types": "^3.14.0" } } diff --git a/src/languageFeatures.ts b/src/languageFeatures.ts index 909bed54..828a0572 100644 --- a/src/languageFeatures.ts +++ b/src/languageFeatures.ts @@ -30,7 +30,7 @@ export class DiagnosticsAdapter { constructor(private _languageId: string, private _worker: WorkerAccessor, defaults: LanguageServiceDefaultsImpl) { const onModelAdd = (model: monaco.editor.IModel): void => { - let modeId = model.getModeId(); + const modeId = model.getModeId(); if (modeId !== this._languageId) { return; } @@ -46,8 +46,8 @@ export class DiagnosticsAdapter { const onModelRemoved = (model: monaco.editor.IModel): void => { monaco.editor.setModelMarkers(model, this._languageId, []); - let uriStr = model.uri.toString(); - let listener = this._listener[uriStr]; + const uriStr = model.uri.toString(); + const listener = this._listener[uriStr]; if (listener) { listener.dispose(); delete this._listener[uriStr]; @@ -74,7 +74,7 @@ export class DiagnosticsAdapter { this._disposables.push({ dispose: () => { - for (let key in this._listener) { + for (const key in this._listener) { this._listener[key].dispose(); } } @@ -113,7 +113,7 @@ function toSeverity(lsSeverity: number): monaco.MarkerSeverity { } function toDiagnostics(resource: Uri, diag: ls.Diagnostic): monaco.editor.IMarkerData { - let code = typeof diag.code === 'number' ? String(diag.code) : diag.code; + const code = typeof diag.code === 'number' ? String(diag.code) : diag.code; return { severity: toSeverity(diag.severity), @@ -151,7 +151,7 @@ function toRange(range: ls.Range): Range { } function toCompletionItemKind(kind: number): monaco.languages.CompletionItemKind { - let mItemKind = monaco.languages.CompletionItemKind; + const mItemKind = monaco.languages.CompletionItemKind; switch (kind) { case ls.CompletionItemKind.Text: return mItemKind.Text; @@ -177,7 +177,7 @@ function toCompletionItemKind(kind: number): monaco.languages.CompletionItemKind } function fromCompletionItemKind(kind: monaco.languages.CompletionItemKind): ls.CompletionItemKind { - let mItemKind = monaco.languages.CompletionItemKind; + const mItemKind = monaco.languages.CompletionItemKind; switch (kind) { case mItemKind.Text: return ls.CompletionItemKind.Text; @@ -212,10 +212,6 @@ function toTextEdit(textEdit: ls.TextEdit): monaco.editor.ISingleEditOperation { } } -interface DataCompletionItem extends monaco.languages.CompletionItem { - data?: any; -} - export class CompletionAdapter implements monaco.languages.CompletionItemProvider { constructor(private _worker: WorkerAccessor) { @@ -235,14 +231,18 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide if (!info) { return; } - let items: monaco.languages.CompletionItem[] = info.items.map(entry => { - let item: monaco.languages.CompletionItem = { + const wordInfo = model.getWordUntilPosition(position); + const wordRange = new Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn); + + const items: monaco.languages.CompletionItem[] = info.items.map(entry => { + const item: monaco.languages.CompletionItem = { label: entry.label, insertText: entry.insertText || entry.label, sortText: entry.sortText, filterText: entry.filterText, documentation: entry.documentation, detail: entry.detail, + range: wordRange, kind: toCompletionItemKind(entry.kind), }; if (entry.textEdit) { @@ -266,34 +266,8 @@ export class CompletionAdapter implements monaco.languages.CompletionItemProvide } } -function isMarkupContent(thing: any): thing is ls.MarkupContent { - return thing && typeof thing === 'object' && typeof (thing).kind === 'string'; -} - -function toMarkdownString(entry: ls.MarkupContent | ls.MarkedString): monaco.IMarkdownString { - if (typeof entry === 'string') { - return { - value: entry - }; - } - if (isMarkupContent(entry)) { - if (entry.kind === 'plaintext') { - return { - value: entry.value.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&') - }; - } - return { - value: entry.value - }; - } - - return { value: '```' + entry.language + '\n' + entry.value + '\n```\n' }; -} - - - function toHighlighKind(kind: ls.DocumentHighlightKind): monaco.languages.DocumentHighlightKind { - let mKind = monaco.languages.DocumentHighlightKind; + const mKind = monaco.languages.DocumentHighlightKind; switch (kind) { case ls.DocumentHighlightKind.Read: return mKind.Read; @@ -403,7 +377,7 @@ export class FoldingRangeAdapter implements monaco.languages.FoldingRangeProvide return; } return ranges.map(range => { - let result: monaco.languages.FoldingRange = { + const result: monaco.languages.FoldingRange = { start: range.startLine + 1, end: range.endLine + 1 };