Jelajahi Sumber

update and adopt

Martin Aeschlimann 6 tahun lalu
induk
melakukan
7605b1802a
3 mengubah file dengan 44 tambahan dan 70 penghapusan
  1. 24 24
      package-lock.json
  2. 5 5
      package.json
  3. 15 41
      src/languageFeatures.ts

+ 24 - 24
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
     }
   }

+ 5 - 5
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"
   }
 }

+ 15 - 41
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) : <string>diag.code;
+	const code = typeof diag.code === 'number' ? String(diag.code) : <string>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 (<ls.MarkupContent>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
 				};