Skip to content

Commit 9ecfa8e

Browse files
committed
Add new files
1 parent 5b5b1d0 commit 9ecfa8e

File tree

2 files changed

+131
-18
lines changed

2 files changed

+131
-18
lines changed

standalone-packages/monaco-typescript/release/dev/languageFeatures.js

Lines changed: 88 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,17 @@ var __extends = (this && this.__extends) || (function () {
1111
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1212
};
1313
})();
14+
var __assign = (this && this.__assign) || function () {
15+
__assign = Object.assign || function(t) {
16+
for (var s, i = 1, n = arguments.length; i < n; i++) {
17+
s = arguments[i];
18+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
19+
t[p] = s[p];
20+
}
21+
return t;
22+
};
23+
return __assign.apply(this, arguments);
24+
};
1425
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1526
return new (P || (P = Promise))(function (resolve, reject) {
1627
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -46,14 +57,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
4657
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
4758
}
4859
};
49-
define(["require", "exports"], function (require, exports) {
60+
define(["require", "exports", "./lib/emmet/expand/languageserver-types"], function (require, exports, ls) {
5061
/*---------------------------------------------------------------------------------------------
5162
* Copyright (c) Microsoft Corporation. All rights reserved.
5263
* Licensed under the MIT License. See License.txt in the project root for license information.
5364
*--------------------------------------------------------------------------------------------*/
5465
'use strict';
5566
Object.defineProperty(exports, "__esModule", { value: true });
5667
var Uri = monaco.Uri;
68+
var Range = monaco.Range;
5769
// @ts-ignore
5870
var Promise = monaco.Promise;
5971
//#region utils copied from typescript to prevent loading the entire typescriptServices ---
@@ -63,6 +75,41 @@ define(["require", "exports"], function (require, exports) {
6375
IndentStyle[IndentStyle["Block"] = 1] = "Block";
6476
IndentStyle[IndentStyle["Smart"] = 2] = "Smart";
6577
})(IndentStyle || (IndentStyle = {}));
78+
var Priority;
79+
(function (Priority) {
80+
Priority[Priority["Emmet"] = 0] = "Emmet";
81+
Priority[Priority["Platform"] = 1] = "Platform";
82+
})(Priority = exports.Priority || (exports.Priority = {}));
83+
function toCompletionItemKind(kind) {
84+
var mItemKind = monaco.languages.CompletionItemKind;
85+
switch (kind) {
86+
case ls.CompletionItemKind.Text: return mItemKind.Text;
87+
case ls.CompletionItemKind.Method: return mItemKind.Method;
88+
case ls.CompletionItemKind.Function: return mItemKind.Function;
89+
case ls.CompletionItemKind.Constructor: return mItemKind.Constructor;
90+
case ls.CompletionItemKind.Field: return mItemKind.Field;
91+
case ls.CompletionItemKind.Variable: return mItemKind.Variable;
92+
case ls.CompletionItemKind.Class: return mItemKind.Class;
93+
case ls.CompletionItemKind.Interface: return mItemKind.Interface;
94+
case ls.CompletionItemKind.Module: return mItemKind.Module;
95+
case ls.CompletionItemKind.Property: return mItemKind.Property;
96+
case ls.CompletionItemKind.Unit: return mItemKind.Unit;
97+
case ls.CompletionItemKind.Value: return mItemKind.Value;
98+
case ls.CompletionItemKind.Enum: return mItemKind.Enum;
99+
case ls.CompletionItemKind.Keyword: return mItemKind.Keyword;
100+
case ls.CompletionItemKind.Snippet: return mItemKind.Snippet;
101+
case ls.CompletionItemKind.Color: return mItemKind.Color;
102+
case ls.CompletionItemKind.File: return mItemKind.File;
103+
case ls.CompletionItemKind.Reference: return mItemKind.Reference;
104+
}
105+
return mItemKind.Property;
106+
}
107+
function toRange(range) {
108+
if (!range) {
109+
return void 0;
110+
}
111+
return new Range(range.start.line + 1, range.start.character + 1, range.end.line + 1, range.end.character + 1);
112+
}
66113
function flattenDiagnosticMessageText(messageText, newLine) {
67114
if (typeof messageText === 'string') {
68115
return messageText;
@@ -225,14 +272,15 @@ define(["require", "exports"], function (require, exports) {
225272
return DiagnostcsAdapter;
226273
}(Adapter));
227274
exports.DiagnostcsAdapter = DiagnostcsAdapter;
275+
var emmetTriggerCharacters = ['!', '.', '}', ':', '*', '$', ']', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
228276
var SuggestAdapter = /** @class */ (function (_super) {
229277
__extends(SuggestAdapter, _super);
230278
function SuggestAdapter() {
231279
return _super !== null && _super.apply(this, arguments) || this;
232280
}
233281
Object.defineProperty(SuggestAdapter.prototype, "triggerCharacters", {
234282
get: function () {
235-
return ['.'];
283+
return emmetTriggerCharacters.concat(['.']);
236284
},
237285
enumerable: true,
238286
configurable: true
@@ -249,16 +297,47 @@ define(["require", "exports"], function (require, exports) {
249297
if (!info) {
250298
return;
251299
}
252-
var suggestions = info.entries.map(function (entry) {
253-
return {
300+
var emmetItems = info.emmetCompletions ? info.emmetCompletions.items.map(function (i) {
301+
var entry = __assign({}, i, { sortText: Priority.Emmet + i.label });
302+
var item = {
303+
label: entry.label,
304+
insertText: entry.insertText,
305+
sortText: entry.sortText,
306+
filterText: entry.filterText,
307+
documentation: entry.documentation,
308+
detail: entry.detail,
254309
uri: resource,
255310
position: position,
256-
label: entry.name,
257-
sortText: entry.sortText,
258-
kind: SuggestAdapter.convertKind(entry.kind),
311+
kind: toCompletionItemKind(entry.kind),
259312
};
260-
});
261-
return suggestions;
313+
if (entry.textEdit) {
314+
item.range = toRange(entry.textEdit.range);
315+
item.insertText = entry.textEdit.newText;
316+
}
317+
if (entry.insertTextFormat === ls.InsertTextFormat.Snippet) {
318+
item.insertText = { value: item.insertText };
319+
}
320+
return item;
321+
}) : [];
322+
var suggestions;
323+
if (info.languageCompletions) {
324+
suggestions = info.languageCompletions.entries.map(function (entry) {
325+
return {
326+
uri: resource,
327+
position: position,
328+
label: entry.name,
329+
sortText: entry.sortText,
330+
kind: SuggestAdapter.convertKind(entry.kind),
331+
};
332+
});
333+
}
334+
else {
335+
suggestions = [];
336+
}
337+
return {
338+
isIncomplete: emmetItems.length !== 0,
339+
items: emmetItems.concat(suggestions)
340+
};
262341
}));
263342
};
264343
SuggestAdapter.prototype.resolveCompletionItem = function (item, token) {

standalone-packages/monaco-typescript/release/dev/tsWorker.js

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
define(["require", "exports", "./lib/typescriptServices", "./lib/lib", "./fetchDependencyTypings"], function (require, exports, ts, lib_1, fetchTypings) {
1+
define(["require", "exports", "./lib/typescriptServices", "./lib/lib", "./fetchDependencyTypings", "./lib/emmet/expand/languageserver-types", "./lib/emmet/emmetHelper"], function (require, exports, ts, lib_1, fetchTypings, ls, emmet) {
22
/*---------------------------------------------------------------------------------------------
33
* Copyright (c) Microsoft Corporation. All rights reserved.
44
* Licensed under the MIT License. See License.txt in the project root for license information.
@@ -14,6 +14,11 @@ define(["require", "exports", "./lib/typescriptServices", "./lib/lib", "./fetchD
1414
NAME: 'defaultLib:lib.es6.d.ts',
1515
CONTENTS: lib_1.lib_es6_dts
1616
};
17+
var Priority;
18+
(function (Priority) {
19+
Priority[Priority["Emmet"] = 0] = "Emmet";
20+
Priority[Priority["Platform"] = 1] = "Platform";
21+
})(Priority = exports.Priority || (exports.Priority = {}));
1722
// Quickly remove amd so BrowserFS will register to global scope instead.
1823
// @ts-ignore
1924
var oldamd = self.define.amd;
@@ -89,13 +94,18 @@ define(["require", "exports", "./lib/typescriptServices", "./lib/lib", "./fetchD
8994
try {
9095
var p = JSON.parse(code);
9196
fetchTypings.fetchAndAddDependencies(p.dependencies, function (paths) {
92-
Object.keys(paths).forEach(function (p) {
93-
var pathToWrite = '/sandbox/' + p;
94-
_this.files[pathToWrite] = paths[p];
95-
ensureDirectoryExistence(pathToWrite, function () {
96-
_this.fs.writeFile(pathToWrite, paths[p], function () { });
97+
var fileAmount = Object.keys(paths).length;
98+
// Only sync if the file amount is not too high, otherwise we'll
99+
// clog all resources
100+
if (fileAmount < 400) {
101+
Object.keys(paths).forEach(function (p) {
102+
var pathToWrite = '/sandbox/' + p;
103+
_this.files[pathToWrite] = paths[p];
104+
ensureDirectoryExistence(pathToWrite, function () {
105+
_this.fs.writeFile(pathToWrite, paths[p], function () { });
106+
});
97107
});
98-
});
108+
}
99109
}).then(function () {
100110
_this.typesLoaded = true;
101111
_this._languageService.cleanupSemanticCache();
@@ -252,6 +262,16 @@ define(["require", "exports", "./lib/typescriptServices", "./lib/lib", "./fetchD
252262
return newP[newP.length - 1];
253263
});
254264
};
265+
TypeScriptWorker.prototype._getTextDocument = function (uri) {
266+
var models = this._ctx.getMirrorModels();
267+
for (var _i = 0, models_1 = models; _i < models_1.length; _i++) {
268+
var model = models_1[_i];
269+
if (model.uri.toString() === uri) {
270+
return ls.TextDocument.create(uri, 'javascript', model.version, model.getValue());
271+
}
272+
}
273+
return null;
274+
};
255275
// --- language features
256276
TypeScriptWorker.clearFiles = function (diagnostics) {
257277
// Clear the `file` field, which cannot be JSON'yfied because it
@@ -285,8 +305,22 @@ define(["require", "exports", "./lib/typescriptServices", "./lib/lib", "./fetchD
285305
TypeScriptWorker.clearFiles(diagnostics);
286306
return Promise.as(diagnostics);
287307
};
288-
TypeScriptWorker.prototype.getCompletionsAtPosition = function (fileName, position) {
289-
return Promise.as(this._languageService.getCompletionsAtPosition(fileName, position, undefined));
308+
TypeScriptWorker.prototype.getCompletionsAtPosition = function (fileName, offset) {
309+
var document = this._getTextDocument(fileName);
310+
var position = document.positionAt(offset);
311+
var languageCompletions = this._languageService.getCompletionsAtPosition(fileName, offset, undefined);
312+
var emmetCompletions = emmet.doComplete(document, position, 'jsx', {
313+
showExpandedAbbreviation: 'always',
314+
showAbbreviationSuggestions: true,
315+
syntaxProfiles: {},
316+
variables: {},
317+
preferences: {}
318+
});
319+
var newLanguageCompletions = {
320+
languageCompletions: languageCompletions,
321+
emmetCompletions: emmetCompletions
322+
};
323+
return Promise.as(newLanguageCompletions);
290324
};
291325
TypeScriptWorker.prototype.getCompletionEntryDetails = function (fileName, position, entry) {
292326
return Promise.as(this._languageService.getCompletionEntryDetails(fileName, position, entry, undefined, undefined, undefined));

0 commit comments

Comments
 (0)