monaco-languageclient
Advanced tools
Comparing version
@@ -9,34 +9,25 @@ define(["require", "exports", "vscode-languageserver-protocol/lib/main", "vscode-languageserver-protocol/lib/utils/is"], function (require, exports, main_1, Is) { | ||
function createConnection(connection, errorHandler, closeHandler) { | ||
connection.onError(function (data) { errorHandler(data[0], data[1], data[2]); }); | ||
connection.onError((data) => { errorHandler(data[0], data[1], data[2]); }); | ||
connection.onClose(closeHandler); | ||
return { | ||
listen: function () { return connection.listen(); }, | ||
sendRequest: function (type) { | ||
var params = []; | ||
for (var _i = 1; _i < arguments.length; _i++) { | ||
params[_i - 1] = arguments[_i]; | ||
} | ||
return connection.sendRequest.apply(connection, [Is.string(type) ? type : type.method].concat(params)); | ||
}, | ||
onRequest: function (type, handler) { return connection.onRequest(Is.string(type) ? type : type.method, handler); }, | ||
sendNotification: function (type, params) { return connection.sendNotification(Is.string(type) ? type : type.method, params); }, | ||
onNotification: function (type, handler) { return connection.onNotification(Is.string(type) ? type : type.method, handler); }, | ||
trace: function (value, tracer, sendNotification) { | ||
if (sendNotification === void 0) { sendNotification = false; } | ||
return connection.trace(value, tracer, sendNotification); | ||
}, | ||
initialize: function (params) { return connection.sendRequest(main_1.InitializeRequest.type, params); }, | ||
shutdown: function () { return connection.sendRequest(main_1.ShutdownRequest.type, undefined); }, | ||
exit: function () { return connection.sendNotification(main_1.ExitNotification.type); }, | ||
onLogMessage: function (handler) { return connection.onNotification(main_1.LogMessageNotification.type, handler); }, | ||
onShowMessage: function (handler) { return connection.onNotification(main_1.ShowMessageNotification.type, handler); }, | ||
onTelemetry: function (handler) { return connection.onNotification(main_1.TelemetryEventNotification.type, handler); }, | ||
didChangeConfiguration: function (params) { return connection.sendNotification(main_1.DidChangeConfigurationNotification.type, params); }, | ||
didChangeWatchedFiles: function (params) { return connection.sendNotification(main_1.DidChangeWatchedFilesNotification.type, params); }, | ||
didOpenTextDocument: function (params) { return connection.sendNotification(main_1.DidOpenTextDocumentNotification.type, params); }, | ||
didChangeTextDocument: function (params) { return connection.sendNotification(main_1.DidChangeTextDocumentNotification.type, params); }, | ||
didCloseTextDocument: function (params) { return connection.sendNotification(main_1.DidCloseTextDocumentNotification.type, params); }, | ||
didSaveTextDocument: function (params) { return connection.sendNotification(main_1.DidSaveTextDocumentNotification.type, params); }, | ||
onDiagnostics: function (handler) { return connection.onNotification(main_1.PublishDiagnosticsNotification.type, handler); }, | ||
dispose: function () { return connection.dispose(); } | ||
listen: () => connection.listen(), | ||
sendRequest: (type, ...params) => connection.sendRequest(Is.string(type) ? type : type.method, ...params), | ||
onRequest: (type, handler) => connection.onRequest(Is.string(type) ? type : type.method, handler), | ||
sendNotification: (type, params) => connection.sendNotification(Is.string(type) ? type : type.method, params), | ||
onNotification: (type, handler) => connection.onNotification(Is.string(type) ? type : type.method, handler), | ||
trace: (value, tracer, sendNotification = false) => connection.trace(value, tracer, sendNotification), | ||
initialize: (params) => connection.sendRequest(main_1.InitializeRequest.type, params), | ||
shutdown: () => connection.sendRequest(main_1.ShutdownRequest.type, undefined), | ||
exit: () => connection.sendNotification(main_1.ExitNotification.type), | ||
onLogMessage: (handler) => connection.onNotification(main_1.LogMessageNotification.type, handler), | ||
onShowMessage: (handler) => connection.onNotification(main_1.ShowMessageNotification.type, handler), | ||
onTelemetry: (handler) => connection.onNotification(main_1.TelemetryEventNotification.type, handler), | ||
didChangeConfiguration: (params) => connection.sendNotification(main_1.DidChangeConfigurationNotification.type, params), | ||
didChangeWatchedFiles: (params) => connection.sendNotification(main_1.DidChangeWatchedFilesNotification.type, params), | ||
didOpenTextDocument: (params) => connection.sendNotification(main_1.DidOpenTextDocumentNotification.type, params), | ||
didChangeTextDocument: (params) => connection.sendNotification(main_1.DidChangeTextDocumentNotification.type, params), | ||
didCloseTextDocument: (params) => connection.sendNotification(main_1.DidCloseTextDocumentNotification.type, params), | ||
didSaveTextDocument: (params) => connection.sendNotification(main_1.DidSaveTextDocumentNotification.type, params), | ||
onDiagnostics: (handler) => connection.onNotification(main_1.PublishDiagnosticsNotification.type, handler), | ||
dispose: () => connection.dispose() | ||
}; | ||
@@ -43,0 +34,0 @@ } |
define(["require", "exports", "./services"], function (require, exports, services_1) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var ConsoleWindow = /** @class */ (function () { | ||
function ConsoleWindow() { | ||
class ConsoleWindow { | ||
constructor() { | ||
this.channels = new Map(); | ||
} | ||
ConsoleWindow.prototype.showMessage = function (type, message) { | ||
var actions = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
actions[_i - 2] = arguments[_i]; | ||
} | ||
showMessage(type, message, ...actions) { | ||
if (type === services_1.MessageType.Error) { | ||
@@ -26,19 +22,19 @@ console.error(message); | ||
return Promise.resolve(undefined); | ||
}; | ||
ConsoleWindow.prototype.createOutputChannel = function (name) { | ||
var existing = this.channels.get(name); | ||
} | ||
createOutputChannel(name) { | ||
const existing = this.channels.get(name); | ||
if (existing) { | ||
return existing; | ||
} | ||
var channel = { | ||
append: function (value) { | ||
const channel = { | ||
append(value) { | ||
console.log(name + ': ' + value); | ||
}, | ||
appendLine: function (line) { | ||
appendLine(line) { | ||
console.log(name + ': ' + line); | ||
}, | ||
show: function () { | ||
show() { | ||
// no-op | ||
}, | ||
dispose: function () { | ||
dispose() { | ||
// no-op | ||
@@ -49,7 +45,6 @@ } | ||
return channel; | ||
}; | ||
return ConsoleWindow; | ||
}()); | ||
} | ||
} | ||
exports.ConsoleWindow = ConsoleWindow; | ||
}); | ||
//# sourceMappingURL=console-window.js.map |
@@ -5,17 +5,17 @@ define(["require", "exports", "./services"], function (require, exports, services_1) { | ||
exports.Disposable = services_1.Disposable; | ||
var DisposableCollection = /** @class */ (function () { | ||
function DisposableCollection() { | ||
class DisposableCollection { | ||
constructor() { | ||
this.disposables = []; | ||
} | ||
DisposableCollection.prototype.dispose = function () { | ||
dispose() { | ||
while (this.disposables.length !== 0) { | ||
this.disposables.pop().dispose(); | ||
} | ||
}; | ||
DisposableCollection.prototype.push = function (disposable) { | ||
var disposables = this.disposables; | ||
} | ||
push(disposable) { | ||
const disposables = this.disposables; | ||
disposables.push(disposable); | ||
return { | ||
dispose: function () { | ||
var index = disposables.indexOf(disposable); | ||
dispose() { | ||
const index = disposables.indexOf(disposable); | ||
if (index !== -1) { | ||
@@ -26,7 +26,6 @@ disposables.splice(index, 1); | ||
}; | ||
}; | ||
return DisposableCollection; | ||
}()); | ||
} | ||
} | ||
exports.DisposableCollection = DisposableCollection; | ||
}); | ||
//# sourceMappingURL=disposable.js.map |
define(["require", "exports"], function (require, exports) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var MonacoCommands = /** @class */ (function () { | ||
function MonacoCommands(editor) { | ||
class MonacoCommands { | ||
constructor(editor) { | ||
this.editor = editor; | ||
} | ||
MonacoCommands.prototype.registerCommand = function (command, callback, thisArg) { | ||
registerCommand(command, callback, thisArg) { | ||
return this.editor._commandService.addCommand({ | ||
id: command, | ||
handler: function (_accessor) { | ||
var args = []; | ||
for (var _i = 1; _i < arguments.length; _i++) { | ||
args[_i - 1] = arguments[_i]; | ||
} | ||
return callback.apply(void 0, args); | ||
} | ||
handler: (_accessor, ...args) => callback(...args) | ||
}); | ||
}; | ||
return MonacoCommands; | ||
}()); | ||
} | ||
} | ||
exports.MonacoCommands = MonacoCommands; | ||
}); | ||
//# sourceMappingURL=monaco-commands.js.map |
@@ -47,3 +47,3 @@ /// <reference types="monaco-editor-core/monaco" /> | ||
asCompletionContext(context: monaco.languages.CompletionContext): CompletionContext; | ||
asTriggerKind(triggerKind: monaco.languages.SuggestTriggerKind): CompletionTriggerKind; | ||
asTriggerKind(triggerKind: monaco.languages.CompletionTriggerKind): CompletionTriggerKind; | ||
asCompletionItem(item: monaco.languages.CompletionItem): CompletionItem; | ||
@@ -85,5 +85,5 @@ protected asCompletionItemKind(value: monaco.languages.CompletionItemKind, original: CompletionItemKind | undefined): CompletionItemKind; | ||
asTextEdit(edit: TextEdit | undefined | null): undefined; | ||
asTextEdits(items: TextEdit[]): monaco.editor.ISingleEditOperation[]; | ||
asTextEdits(items: TextEdit[]): monaco.languages.TextEdit[]; | ||
asTextEdits(items: undefined | null): undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.editor.ISingleEditOperation[] | undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.languages.TextEdit[] | undefined; | ||
asCodeLens(item: CodeLens): monaco.languages.ICodeLensSymbol; | ||
@@ -95,4 +95,4 @@ asCodeLens(item: undefined | null): undefined; | ||
asCodeLenses(items: CodeLens[] | undefined | null): monaco.languages.ICodeLensSymbol[] | undefined; | ||
asCodeActions(actions: (Command | CodeAction)[]): monaco.languages.CodeAction[]; | ||
asCodeAction(item: Command | CodeAction): monaco.languages.CodeAction; | ||
asCodeActions(actions: (Command | CodeAction)[]): (monaco.languages.Command | monaco.languages.CodeAction)[]; | ||
asCodeAction(item: Command | CodeAction): monaco.languages.Command | monaco.languages.CodeAction; | ||
asCommand(command: Command): monaco.languages.Command; | ||
@@ -142,11 +142,12 @@ asCommand(command: undefined): undefined; | ||
asRelatedInformation(relatedInformation: DiagnosticRelatedInformation): monaco.editor.IRelatedInformation; | ||
asCompletionResult(result: CompletionItem[] | CompletionList | null | undefined): monaco.languages.CompletionList; | ||
asCompletionItem(item: CompletionItem): ProtocolCompletionItem; | ||
asCompletionResult(result: CompletionItem[] | CompletionList | null | undefined, defaultRange: monaco.IRange): monaco.languages.CompletionList; | ||
asCompletionItem(item: CompletionItem, defaultRange: monaco.IRange): ProtocolCompletionItem; | ||
asCompletionItemKind(value: CompletionItemKind): [monaco.languages.CompletionItemKind, CompletionItemKind | undefined]; | ||
asCompletionInsertText(item: CompletionItem): { | ||
text: string | monaco.languages.SnippetString; | ||
range?: monaco.Range; | ||
asCompletionInsertText(item: CompletionItem, defaultRange: monaco.IRange): { | ||
insertText: string; | ||
range: monaco.IRange; | ||
fromEdit: boolean; | ||
} | undefined; | ||
asDocumentLinks(documentLinks: DocumentLink[]): ProtocolDocumentLink[]; | ||
isSnippet: boolean; | ||
}; | ||
asDocumentLinks(documentLinks: DocumentLink[]): monaco.languages.ILinksList; | ||
asDocumentLink(documentLink: DocumentLink): ProtocolDocumentLink; | ||
@@ -153,0 +154,0 @@ asRange(range: null): null; |
@@ -1,13 +0,2 @@ | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
define(["require", "exports", "vscode-languageserver-protocol/lib/utils/is", "./services"], function (require, exports, Is, services_1) { | ||
define(["require", "exports", "vscode-languageserver-protocol", "vscode-languageserver-protocol/lib/utils/is", "./services"], function (require, exports, ls, Is, services_1) { | ||
"use strict"; | ||
@@ -36,13 +25,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||
})(ProtocolCompletionItem = exports.ProtocolCompletionItem || (exports.ProtocolCompletionItem = {})); | ||
var MonacoToProtocolConverter = /** @class */ (function () { | ||
function MonacoToProtocolConverter() { | ||
} | ||
MonacoToProtocolConverter.prototype.asPosition = function (lineNumber, column) { | ||
var line = lineNumber === undefined || lineNumber === null ? undefined : lineNumber - 1; | ||
var character = column === undefined || column === null ? undefined : column - 1; | ||
class MonacoToProtocolConverter { | ||
asPosition(lineNumber, column) { | ||
const line = lineNumber === undefined || lineNumber === null ? undefined : lineNumber - 1; | ||
const character = column === undefined || column === null ? undefined : column - 1; | ||
return { | ||
line: line, character: character | ||
line, character | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asRange = function (range) { | ||
} | ||
asRange(range) { | ||
if (range === undefined) { | ||
@@ -54,14 +41,14 @@ return undefined; | ||
} | ||
var start = this.asPosition(range.startLineNumber, range.startColumn); | ||
var end = this.asPosition(range.endLineNumber, range.endColumn); | ||
const start = this.asPosition(range.startLineNumber, range.startColumn); | ||
const end = this.asPosition(range.endLineNumber, range.endColumn); | ||
return { | ||
start: start, end: end | ||
start, end | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextDocumentIdentifier = function (model) { | ||
} | ||
asTextDocumentIdentifier(model) { | ||
return { | ||
uri: model.uri.toString() | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextDocumentPositionParams = function (model, position) { | ||
} | ||
asTextDocumentPositionParams(model, position) { | ||
return { | ||
@@ -71,9 +58,9 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionParams = function (model, position, context) { | ||
} | ||
asCompletionParams(model, position, context) { | ||
return Object.assign(this.asTextDocumentPositionParams(model, position), { | ||
context: this.asCompletionContext(context) | ||
}); | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionContext = function (context) { | ||
} | ||
asCompletionContext(context) { | ||
return { | ||
@@ -83,8 +70,8 @@ triggerKind: this.asTriggerKind(context.triggerKind), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTriggerKind = function (triggerKind) { | ||
} | ||
asTriggerKind(triggerKind) { | ||
switch (triggerKind) { | ||
case monaco.languages.SuggestTriggerKind.TriggerCharacter: | ||
case monaco.languages.CompletionTriggerKind.TriggerCharacter: | ||
return services_1.CompletionTriggerKind.TriggerCharacter; | ||
case monaco.languages.SuggestTriggerKind.TriggerForIncompleteCompletions: | ||
case monaco.languages.CompletionTriggerKind.TriggerForIncompleteCompletions: | ||
return services_1.CompletionTriggerKind.TriggerForIncompleteCompletions; | ||
@@ -94,6 +81,6 @@ default: | ||
} | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionItem = function (item) { | ||
var result = { label: item.label }; | ||
var protocolItem = ProtocolCompletionItem.is(item) ? item : undefined; | ||
} | ||
asCompletionItem(item) { | ||
const result = { label: item.label }; | ||
const protocolItem = ProtocolCompletionItem.is(item) ? item : undefined; | ||
if (item.detail) { | ||
@@ -144,4 +131,4 @@ result.detail = item.detail; | ||
return result; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionItemKind = function (value, original) { | ||
} | ||
asCompletionItemKind(value, original) { | ||
if (original !== undefined) { | ||
@@ -151,4 +138,4 @@ return original; | ||
return value + 1; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentation = function (format, documentation) { | ||
} | ||
asDocumentation(format, documentation) { | ||
switch (format) { | ||
@@ -160,20 +147,15 @@ case services_1.MarkupKind.PlainText: | ||
default: | ||
return "Unsupported Markup content received. Kind is: " + format; | ||
return `Unsupported Markup content received. Kind is: ${format}`; | ||
} | ||
}; | ||
MonacoToProtocolConverter.prototype.fillPrimaryInsertText = function (target, source) { | ||
var format = services_1.InsertTextFormat.PlainText; | ||
var text; | ||
var range; | ||
if (source.textEdit) { | ||
text = source.textEdit.text; | ||
range = this.asRange(source.textEdit.range); | ||
} | ||
else if (typeof source.insertText === 'string') { | ||
} | ||
fillPrimaryInsertText(target, source) { | ||
let format = services_1.InsertTextFormat.PlainText; | ||
let text; | ||
let range; | ||
if (source.insertTextRules !== undefined && (source.insertTextRules & monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet) === 0) { | ||
format = services_1.InsertTextFormat.Snippet; | ||
text = source.insertText; | ||
} | ||
else if (source.insertText) { | ||
format = services_1.InsertTextFormat.Snippet; | ||
text = source.insertText.value; | ||
} | ||
target.insertTextFormat = format; | ||
text = source.insertText; | ||
if (source.range) { | ||
@@ -189,18 +171,17 @@ range = this.asRange(source.range); | ||
} | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextEdit = function (edit) { | ||
var range = this.asRange(edit.range); | ||
} | ||
asTextEdit(edit) { | ||
const range = this.asRange(edit.range); | ||
return { | ||
range: range, | ||
newText: edit.text | ||
range, | ||
newText: edit.text || '' | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextEdits = function (items) { | ||
var _this = this; | ||
} | ||
asTextEdits(items) { | ||
if (!items) { | ||
return undefined; | ||
} | ||
return items.map(function (item) { return _this.asTextEdit(item); }); | ||
}; | ||
MonacoToProtocolConverter.prototype.asReferenceParams = function (model, position, options) { | ||
return items.map(item => this.asTextEdit(item)); | ||
} | ||
asReferenceParams(model, position, options) { | ||
return { | ||
@@ -211,14 +192,14 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentSymbolParams = function (model) { | ||
} | ||
asDocumentSymbolParams(model) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeLensParams = function (model) { | ||
} | ||
asCodeLensParams(model) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDiagnosticSeverity = function (value) { | ||
} | ||
asDiagnosticSeverity(value) { | ||
switch (value) { | ||
@@ -235,23 +216,22 @@ case monaco.MarkerSeverity.Error: | ||
return undefined; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDiagnostic = function (marker) { | ||
var range = this.asRange(new monaco.Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn)); | ||
var severity = this.asDiagnosticSeverity(marker.severity); | ||
} | ||
asDiagnostic(marker) { | ||
const range = this.asRange(new monaco.Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn)); | ||
const severity = this.asDiagnosticSeverity(marker.severity); | ||
return services_1.Diagnostic.create(range, marker.message, severity, marker.code, marker.source); | ||
}; | ||
MonacoToProtocolConverter.prototype.asDiagnostics = function (markers) { | ||
var _this = this; | ||
} | ||
asDiagnostics(markers) { | ||
if (markers === void 0 || markers === null) { | ||
return markers; | ||
} | ||
return markers.map(function (marker) { return _this.asDiagnostic(marker); }); | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeActionContext = function (context) { | ||
return markers.map(marker => this.asDiagnostic(marker)); | ||
} | ||
asCodeActionContext(context) { | ||
if (context === void 0 || context === null) { | ||
return context; | ||
} | ||
var diagnostics = this.asDiagnostics(context.markers); | ||
const diagnostics = this.asDiagnostics(context.markers); | ||
return services_1.CodeActionContext.create(diagnostics, Is.string(context.only) ? [context.only] : undefined); | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeActionParams = function (model, range, context) { | ||
} | ||
asCodeActionParams(model, range, context) { | ||
return { | ||
@@ -262,12 +242,12 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCommand = function (item) { | ||
} | ||
asCommand(item) { | ||
if (item) { | ||
var args = item.arguments || []; | ||
return services_1.Command.create.apply(services_1.Command, [item.title, item.id].concat(args)); | ||
let args = item.arguments || []; | ||
return services_1.Command.create(item.title, item.id, ...args); | ||
} | ||
return undefined; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeLens = function (item) { | ||
var result = services_1.CodeLens.create(this.asRange(item.range)); | ||
} | ||
asCodeLens(item) { | ||
let result = services_1.CodeLens.create(this.asRange(item.range)); | ||
if (item.command) { | ||
@@ -283,7 +263,7 @@ result.command = this.asCommand(item.command); | ||
return result; | ||
}; | ||
MonacoToProtocolConverter.prototype.asFormattingOptions = function (options) { | ||
} | ||
asFormattingOptions(options) { | ||
return { tabSize: options.tabSize, insertSpaces: options.insertSpaces }; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentFormattingParams = function (model, options) { | ||
} | ||
asDocumentFormattingParams(model, options) { | ||
return { | ||
@@ -293,4 +273,4 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentRangeFormattingParams = function (model, range, options) { | ||
} | ||
asDocumentRangeFormattingParams(model, range, options) { | ||
return { | ||
@@ -301,27 +281,27 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentOnTypeFormattingParams = function (model, position, ch, options) { | ||
} | ||
asDocumentOnTypeFormattingParams(model, position, ch, options) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model), | ||
position: this.asPosition(position.lineNumber, position.column), | ||
ch: ch, | ||
ch, | ||
options: this.asFormattingOptions(options) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asRenameParams = function (model, position, newName) { | ||
} | ||
asRenameParams(model, position, newName) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model), | ||
position: this.asPosition(position.lineNumber, position.column), | ||
newName: newName | ||
newName | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentLinkParams = function (model) { | ||
} | ||
asDocumentLinkParams(model) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentLink = function (item) { | ||
var result = services_1.DocumentLink.create(this.asRange(item.range)); | ||
} | ||
asDocumentLink(item) { | ||
let result = services_1.DocumentLink.create(this.asRange(item.range)); | ||
if (item.url) { | ||
result.target = item.url; | ||
result.target = typeof item.url === 'string' ? item.url : item.url.toString(); | ||
} | ||
@@ -332,33 +312,52 @@ if (ProtocolDocumentLink.is(item) && item.data) { | ||
return result; | ||
}; | ||
return MonacoToProtocolConverter; | ||
}()); | ||
} | ||
} | ||
exports.MonacoToProtocolConverter = MonacoToProtocolConverter; | ||
var ProtocolToMonacoConverter = /** @class */ (function () { | ||
function ProtocolToMonacoConverter() { | ||
} | ||
ProtocolToMonacoConverter.prototype.asResourceEdits = function (resource, edits, modelVersionId) { | ||
class ProtocolToMonacoConverter { | ||
asResourceEdits(resource, edits, modelVersionId) { | ||
return { | ||
resource: resource, | ||
edits: this.asTextEdits(edits), | ||
modelVersionId: modelVersionId | ||
modelVersionId | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asWorkspaceEdit = function (item) { | ||
} | ||
asWorkspaceEdit(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var edits = []; | ||
const edits = []; | ||
if (item.documentChanges) { | ||
for (var _i = 0, _a = item.documentChanges; _i < _a.length; _i++) { | ||
var change = _a[_i]; | ||
var resource = monaco.Uri.parse(change.textDocument.uri); | ||
var version = typeof change.textDocument.version === 'number' ? change.textDocument.version : undefined; | ||
edits.push(this.asResourceEdits(resource, change.edits, version)); | ||
} | ||
item.documentChanges.forEach(change => { | ||
if (ls.CreateFile.is(change)) { | ||
edits.push({ | ||
newUri: monaco.Uri.parse(change.uri), | ||
options: change.options | ||
}); | ||
} | ||
else if (ls.RenameFile.is(change)) { | ||
edits.push({ | ||
oldUri: monaco.Uri.parse(change.oldUri), | ||
newUri: monaco.Uri.parse(change.newUri), | ||
options: change.options | ||
}); | ||
} | ||
else if (ls.DeleteFile.is(change)) { | ||
edits.push({ | ||
oldUri: monaco.Uri.parse(change.uri), | ||
options: change.options | ||
}); | ||
} | ||
else if (ls.TextDocumentEdit.is(change)) { | ||
const resource = monaco.Uri.parse(change.textDocument.uri); | ||
const version = typeof change.textDocument.version === 'number' ? change.textDocument.version : undefined; | ||
edits.push(this.asResourceEdits(resource, change.edits, version)); | ||
} | ||
else { | ||
console.error(`Unknown workspace edit change received:\n${JSON.stringify(change, undefined, 4)}`); | ||
} | ||
}); | ||
} | ||
else if (item.changes) { | ||
for (var _b = 0, _c = Object.keys(item.changes); _b < _c.length; _b++) { | ||
var key = _c[_b]; | ||
var resource = monaco.Uri.parse(key); | ||
for (const key of Object.keys(item.changes)) { | ||
const resource = monaco.Uri.parse(key); | ||
edits.push(this.asResourceEdits(resource, item.changes[key])); | ||
@@ -368,28 +367,27 @@ } | ||
return { | ||
edits: edits | ||
edits | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asTextEdit = function (edit) { | ||
} | ||
asTextEdit(edit) { | ||
if (!edit) { | ||
return undefined; | ||
} | ||
var range = this.asRange(edit.range); | ||
const range = this.asRange(edit.range); | ||
return { | ||
range: range, | ||
range, | ||
text: edit.newText | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asTextEdits = function (items) { | ||
var _this = this; | ||
} | ||
asTextEdits(items) { | ||
if (!items) { | ||
return undefined; | ||
} | ||
return items.map(function (item) { return _this.asTextEdit(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeLens = function (item) { | ||
return items.map(item => this.asTextEdit(item)); | ||
} | ||
asCodeLens(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var range = this.asRange(item.range); | ||
var result = { range: range }; | ||
const range = this.asRange(item.range); | ||
let result = { range }; | ||
if (item.command) { | ||
@@ -402,15 +400,13 @@ result.command = this.asCommand(item.command); | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeLenses = function (items) { | ||
var _this = this; | ||
} | ||
asCodeLenses(items) { | ||
if (!items) { | ||
return undefined; | ||
} | ||
return items.map(function (codeLens) { return _this.asCodeLens(codeLens); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeActions = function (actions) { | ||
var _this = this; | ||
return actions.map(function (action) { return _this.asCodeAction(action); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeAction = function (item) { | ||
return items.map((codeLens) => this.asCodeLens(codeLens)); | ||
} | ||
asCodeActions(actions) { | ||
return actions.map(action => this.asCodeAction(action)); | ||
} | ||
asCodeAction(item) { | ||
if (services_1.CodeAction.is(item)) { | ||
@@ -433,4 +429,4 @@ return { | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCommand = function (command) { | ||
} | ||
asCommand(command) { | ||
if (!command) { | ||
@@ -444,6 +440,5 @@ return undefined; | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentSymbol = function (value) { | ||
var _this = this; | ||
var children = value.children && value.children.map(function (c) { return _this.asDocumentSymbol(c); }); | ||
} | ||
asDocumentSymbol(value) { | ||
const children = value.children && value.children.map(c => this.asDocumentSymbol(c)); | ||
return { | ||
@@ -455,21 +450,19 @@ name: value.name, | ||
selectionRange: this.asRange(value.selectionRange), | ||
children: children | ||
children | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentSymbols = function (values) { | ||
var _this = this; | ||
} | ||
asDocumentSymbols(values) { | ||
if (services_1.DocumentSymbol.is(values[0])) { | ||
return values.map(function (s) { return _this.asDocumentSymbol(s); }); | ||
return values.map(s => this.asDocumentSymbol(s)); | ||
} | ||
return this.asSymbolInformations(values); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSymbolInformations = function (values, uri) { | ||
var _this = this; | ||
} | ||
asSymbolInformations(values, uri) { | ||
if (!values) { | ||
return undefined; | ||
} | ||
return values.map(function (information) { return _this.asSymbolInformation(information, uri); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSymbolInformation = function (item, uri) { | ||
var location = this.asLocation(uri ? __assign({}, item.location, { uri: uri.toString() }) : item.location); | ||
return values.map(information => this.asSymbolInformation(information, uri)); | ||
} | ||
asSymbolInformation(item, uri) { | ||
const location = this.asLocation(uri ? Object.assign({}, item.location, { uri: uri.toString() }) : item.location); | ||
return { | ||
@@ -483,4 +476,4 @@ name: item.name, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSymbolKind = function (item) { | ||
} | ||
asSymbolKind(item) { | ||
if (item <= services_1.SymbolKind.TypeParameter) { | ||
@@ -491,16 +484,15 @@ // Symbol kind is one based in the protocol and zero based in code. | ||
return monaco.languages.SymbolKind.Property; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentHighlights = function (values) { | ||
var _this = this; | ||
} | ||
asDocumentHighlights(values) { | ||
if (!values) { | ||
return undefined; | ||
} | ||
return values.map(function (item) { return _this.asDocumentHighlight(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentHighlight = function (item) { | ||
var range = this.asRange(item.range); | ||
var kind = Is.number(item.kind) ? this.asDocumentHighlightKind(item.kind) : undefined; | ||
return { range: range, kind: kind }; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentHighlightKind = function (item) { | ||
return values.map(item => this.asDocumentHighlight(item)); | ||
} | ||
asDocumentHighlight(item) { | ||
const range = this.asRange(item.range); | ||
const kind = Is.number(item.kind) ? this.asDocumentHighlightKind(item.kind) : undefined; | ||
return { range, kind }; | ||
} | ||
asDocumentHighlightKind(item) { | ||
switch (item) { | ||
@@ -515,12 +507,10 @@ case services_1.DocumentHighlightKind.Text: | ||
return monaco.languages.DocumentHighlightKind.Text; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asReferences = function (values) { | ||
var _this = this; | ||
} | ||
asReferences(values) { | ||
if (!values) { | ||
return undefined; | ||
} | ||
return values.map(function (location) { return _this.asLocation(location); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDefinitionResult = function (item) { | ||
var _this = this; | ||
return values.map(location => this.asLocation(location)); | ||
} | ||
asDefinitionResult(item) { | ||
if (!item) { | ||
@@ -530,3 +520,3 @@ return undefined; | ||
if (Is.array(item)) { | ||
return item.map(function (location) { return _this.asLocation(location); }); | ||
return item.map((location) => this.asLocation(location)); | ||
} | ||
@@ -536,18 +526,18 @@ else { | ||
} | ||
}; | ||
ProtocolToMonacoConverter.prototype.asLocation = function (item) { | ||
} | ||
asLocation(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var uri = monaco.Uri.parse(item.uri); | ||
var range = this.asRange(item.range); | ||
const uri = monaco.Uri.parse(item.uri); | ||
const range = this.asRange(item.range); | ||
return { | ||
uri: uri, range: range | ||
uri, range | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSignatureHelp = function (item) { | ||
} | ||
asSignatureHelp(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var result = {}; | ||
let result = {}; | ||
if (Is.number(item.activeSignature)) { | ||
@@ -574,9 +564,8 @@ result.activeSignature = item.activeSignature; | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSignatureInformations = function (items) { | ||
var _this = this; | ||
return items.map(function (item) { return _this.asSignatureInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSignatureInformation = function (item) { | ||
var result = { label: item.label }; | ||
} | ||
asSignatureInformations(items) { | ||
return items.map(item => this.asSignatureInformation(item)); | ||
} | ||
asSignatureInformation(item) { | ||
let result = { label: item.label }; | ||
if (item.documentation) { | ||
@@ -592,9 +581,8 @@ result.documentation = this.asDocumentation(item.documentation); | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asParameterInformations = function (item) { | ||
var _this = this; | ||
return item.map(function (item) { return _this.asParameterInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asParameterInformation = function (item) { | ||
var result = { label: item.label }; | ||
} | ||
asParameterInformations(item) { | ||
return item.map(item => this.asParameterInformation(item)); | ||
} | ||
asParameterInformation(item) { | ||
let result = { label: item.label }; | ||
if (item.documentation) { | ||
@@ -605,4 +593,4 @@ result.documentation = this.asDocumentation(item.documentation); | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asHover = function (hover) { | ||
} | ||
asHover(hover) { | ||
if (!hover) { | ||
@@ -615,11 +603,10 @@ return undefined; | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asHoverContent = function (contents) { | ||
var _this = this; | ||
} | ||
asHoverContent(contents) { | ||
if (Array.isArray(contents)) { | ||
return contents.map(function (content) { return _this.asMarkdownString(content); }); | ||
return contents.map(content => this.asMarkdownString(content)); | ||
} | ||
return [this.asMarkdownString(contents)]; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentation = function (value) { | ||
} | ||
asDocumentation(value) { | ||
if (Is.string(value)) { | ||
@@ -632,4 +619,4 @@ return value; | ||
return this.asMarkdownString(value); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asMarkdownString = function (content) { | ||
} | ||
asMarkdownString(content) { | ||
if (services_1.MarkupContent.is(content)) { | ||
@@ -643,8 +630,8 @@ return { | ||
} | ||
var language = content.language, value = content.value; | ||
const { language, value } = content; | ||
return { | ||
value: '```' + language + '\n' + value + '\n```' | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSeverity = function (severity) { | ||
} | ||
asSeverity(severity) { | ||
if (severity === 1) { | ||
@@ -660,11 +647,10 @@ return monaco.MarkerSeverity.Error; | ||
return monaco.MarkerSeverity.Hint; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDiagnostics = function (diagnostics) { | ||
var _this = this; | ||
} | ||
asDiagnostics(diagnostics) { | ||
if (!diagnostics) { | ||
return undefined; | ||
} | ||
return diagnostics.map(function (diagnostic) { return _this.asDiagnostic(diagnostic); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDiagnostic = function (diagnostic) { | ||
return diagnostics.map(diagnostic => this.asDiagnostic(diagnostic)); | ||
} | ||
asDiagnostic(diagnostic) { | ||
return { | ||
@@ -681,11 +667,10 @@ code: typeof diagnostic.code === "number" ? diagnostic.code.toString() : diagnostic.code, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asRelatedInformations = function (relatedInformation) { | ||
var _this = this; | ||
} | ||
asRelatedInformations(relatedInformation) { | ||
if (!relatedInformation) { | ||
return undefined; | ||
} | ||
return relatedInformation.map(function (item) { return _this.asRelatedInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asRelatedInformation = function (relatedInformation) { | ||
return relatedInformation.map(item => this.asRelatedInformation(item)); | ||
} | ||
asRelatedInformation(relatedInformation) { | ||
return { | ||
@@ -699,25 +684,24 @@ resource: monaco.Uri.parse(relatedInformation.location.uri), | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionResult = function (result) { | ||
var _this = this; | ||
} | ||
asCompletionResult(result, defaultRange) { | ||
if (!result) { | ||
return { | ||
isIncomplete: false, | ||
items: [] | ||
incomplete: false, | ||
suggestions: [] | ||
}; | ||
} | ||
if (Array.isArray(result)) { | ||
var items = result.map(function (item) { return _this.asCompletionItem(item); }); | ||
const suggestions = result.map(item => this.asCompletionItem(item, defaultRange)); | ||
return { | ||
isIncomplete: false, | ||
items: items | ||
incomplete: false, | ||
suggestions | ||
}; | ||
} | ||
return { | ||
isIncomplete: result.isIncomplete, | ||
items: result.items.map(this.asCompletionItem.bind(this)) | ||
incomplete: result.isIncomplete, | ||
suggestions: result.items.map(item => this.asCompletionItem(item, defaultRange)) | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionItem = function (item) { | ||
var result = { label: item.label }; | ||
} | ||
asCompletionItem(item, defaultRange) { | ||
const result = { label: item.label }; | ||
if (item.detail) { | ||
@@ -734,10 +718,11 @@ result.detail = item.detail; | ||
} | ||
var insertText = this.asCompletionInsertText(item); | ||
if (insertText) { | ||
result.insertText = insertText.text; | ||
result.range = insertText.range; | ||
result.fromEdit = insertText.fromEdit; | ||
const insertText = this.asCompletionInsertText(item, defaultRange); | ||
result.insertText = insertText.insertText; | ||
result.range = insertText.range; | ||
result.fromEdit = insertText.fromEdit; | ||
if (insertText.isSnippet) { | ||
result.insertTextRules = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet; | ||
} | ||
if (Is.number(item.kind)) { | ||
var _a = this.asCompletionItemKind(item.kind), itemKind = _a[0], original = _a[1]; | ||
let [itemKind, original] = this.asCompletionItemKind(item.kind); | ||
result.kind = itemKind; | ||
@@ -763,9 +748,14 @@ if (original) { | ||
} | ||
// TODO if (item.preselect === true || item.preselect === false) { result.preselect = item.preselect; } | ||
if (item.preselect === true || item.preselect === false) { | ||
result.preselect = item.preselect; | ||
} | ||
if (item.data !== undefined) { | ||
result.data = item.data; | ||
} | ||
if (item.deprecated === true || item.deprecated === false) { | ||
result.deprecated = item.deprecated; | ||
} | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionItemKind = function (value) { | ||
} | ||
asCompletionItemKind(value) { | ||
// Protocol item kind is 1 based, codes item kind is zero based. | ||
@@ -777,24 +767,20 @@ if (services_1.CompletionItemKind.Text <= value && value <= services_1.CompletionItemKind.TypeParameter) { | ||
return [services_1.CompletionItemKind.Text, value]; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionInsertText = function (item) { | ||
} | ||
asCompletionInsertText(item, defaultRange) { | ||
const isSnippet = item.insertTextFormat === services_1.InsertTextFormat.Snippet; | ||
if (item.textEdit) { | ||
var range = this.asRange(item.textEdit.range); | ||
var value = item.textEdit.newText; | ||
var text = item.insertTextFormat === services_1.InsertTextFormat.Snippet ? { value: value } : value; | ||
return { | ||
text: text, range: range, fromEdit: true | ||
}; | ||
const range = this.asRange(item.textEdit.range); | ||
const value = item.textEdit.newText; | ||
return { isSnippet, insertText: value, range, fromEdit: true, }; | ||
} | ||
if (item.insertText) { | ||
var value = item.insertText; | ||
var text = item.insertTextFormat === services_1.InsertTextFormat.Snippet ? { value: value } : value; | ||
return { text: text, fromEdit: false }; | ||
return { isSnippet, insertText: item.insertText, fromEdit: false, range: defaultRange }; | ||
} | ||
return undefined; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentLinks = function (documentLinks) { | ||
var _this = this; | ||
return documentLinks.map(function (link) { return _this.asDocumentLink(link); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentLink = function (documentLink) { | ||
return { insertText: item.label, range: defaultRange, fromEdit: false, isSnippet: false }; | ||
} | ||
asDocumentLinks(documentLinks) { | ||
const links = documentLinks.map(link => this.asDocumentLink(link)); | ||
return { links }; | ||
} | ||
asDocumentLink(documentLink) { | ||
return { | ||
@@ -805,4 +791,4 @@ range: this.asRange(documentLink.range), | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asRange = function (range) { | ||
} | ||
asRange(range) { | ||
if (range === undefined) { | ||
@@ -814,14 +800,14 @@ return undefined; | ||
} | ||
var start = this.asPosition(range.start); | ||
var end = this.asPosition(range.end); | ||
const start = this.asPosition(range.start); | ||
const end = this.asPosition(range.end); | ||
if (start instanceof monaco.Position && end instanceof monaco.Position) { | ||
return new monaco.Range(start.lineNumber, start.column, end.lineNumber, end.column); | ||
} | ||
var startLineNumber = !start || start.lineNumber === undefined ? undefined : start.lineNumber; | ||
var startColumn = !start || start.column === undefined ? undefined : start.column; | ||
var endLineNumber = !end || end.lineNumber === undefined ? undefined : end.lineNumber; | ||
var endColumn = !end || end.column === undefined ? undefined : end.column; | ||
return { startLineNumber: startLineNumber, startColumn: startColumn, endLineNumber: endLineNumber, endColumn: endColumn }; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asPosition = function (position) { | ||
const startLineNumber = !start || start.lineNumber === undefined ? undefined : start.lineNumber; | ||
const startColumn = !start || start.column === undefined ? undefined : start.column; | ||
const endLineNumber = !end || end.lineNumber === undefined ? undefined : end.lineNumber; | ||
const endColumn = !end || end.column === undefined ? undefined : end.column; | ||
return { startLineNumber, startColumn, endLineNumber, endColumn }; | ||
} | ||
asPosition(position) { | ||
if (position === undefined) { | ||
@@ -833,15 +819,14 @@ return undefined; | ||
} | ||
var line = position.line, character = position.character; | ||
var lineNumber = line === undefined ? undefined : line + 1; | ||
var column = character === undefined ? undefined : character + 1; | ||
const { line, character } = position; | ||
const lineNumber = line === undefined ? undefined : line + 1; | ||
const column = character === undefined ? undefined : character + 1; | ||
if (lineNumber !== undefined && column !== undefined) { | ||
return new monaco.Position(lineNumber, column); | ||
} | ||
return { lineNumber: lineNumber, column: column }; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorInformations = function (items) { | ||
var _this = this; | ||
return items.map(function (item) { return _this.asColorInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorInformation = function (item) { | ||
return { lineNumber, column }; | ||
} | ||
asColorInformations(items) { | ||
return items.map(item => this.asColorInformation(item)); | ||
} | ||
asColorInformation(item) { | ||
return { | ||
@@ -851,8 +836,7 @@ range: this.asRange(item.range), | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorPresentations = function (items) { | ||
var _this = this; | ||
return items.map(function (item) { return _this.asColorPresentation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorPresentation = function (item) { | ||
} | ||
asColorPresentations(items) { | ||
return items.map(item => this.asColorPresentation(item)); | ||
} | ||
asColorPresentation(item) { | ||
return { | ||
@@ -863,11 +847,10 @@ label: item.label, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asFoldingRanges = function (items) { | ||
var _this = this; | ||
} | ||
asFoldingRanges(items) { | ||
if (!items) { | ||
return items; | ||
} | ||
return items.map(function (item) { return _this.asFoldingRange(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asFoldingRange = function (item) { | ||
return items.map(item => this.asFoldingRange(item)); | ||
} | ||
asFoldingRange(item) { | ||
return { | ||
@@ -878,4 +861,4 @@ start: item.startLine + 1, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asFoldingRangeKind = function (kind) { | ||
} | ||
asFoldingRangeKind(kind) { | ||
if (kind) { | ||
@@ -893,7 +876,6 @@ switch (kind) { | ||
return undefined; | ||
}; | ||
return ProtocolToMonacoConverter; | ||
}()); | ||
} | ||
} | ||
exports.ProtocolToMonacoConverter = ProtocolToMonacoConverter; | ||
}); | ||
//# sourceMappingURL=monaco-converter.js.map |
define(["require", "exports", "./disposable"], function (require, exports, disposable_1) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var MonacoDiagnosticCollection = /** @class */ (function () { | ||
function MonacoDiagnosticCollection(name, p2m) { | ||
class MonacoDiagnosticCollection { | ||
constructor(name, p2m) { | ||
this.name = name; | ||
@@ -11,12 +11,11 @@ this.p2m = p2m; | ||
} | ||
MonacoDiagnosticCollection.prototype.dispose = function () { | ||
dispose() { | ||
this.toDispose.dispose(); | ||
}; | ||
MonacoDiagnosticCollection.prototype.get = function (uri) { | ||
var diagnostics = this.diagnostics.get(uri); | ||
} | ||
get(uri) { | ||
const diagnostics = this.diagnostics.get(uri); | ||
return !!diagnostics ? diagnostics.diagnostics : []; | ||
}; | ||
MonacoDiagnosticCollection.prototype.set = function (uri, diagnostics) { | ||
var _this = this; | ||
var existing = this.diagnostics.get(uri); | ||
} | ||
set(uri, diagnostics) { | ||
const existing = this.diagnostics.get(uri); | ||
if (existing) { | ||
@@ -26,16 +25,14 @@ existing.diagnostics = diagnostics; | ||
else { | ||
var modelDiagnostics_1 = new MonacoModelDiagnostics(uri, diagnostics, this.name, this.p2m); | ||
this.diagnostics.set(uri, modelDiagnostics_1); | ||
this.toDispose.push(disposable_1.Disposable.create(function () { | ||
_this.diagnostics.delete(uri); | ||
modelDiagnostics_1.dispose(); | ||
const modelDiagnostics = new MonacoModelDiagnostics(uri, diagnostics, this.name, this.p2m); | ||
this.diagnostics.set(uri, modelDiagnostics); | ||
this.toDispose.push(disposable_1.Disposable.create(() => { | ||
this.diagnostics.delete(uri); | ||
modelDiagnostics.dispose(); | ||
})); | ||
} | ||
}; | ||
return MonacoDiagnosticCollection; | ||
}()); | ||
} | ||
} | ||
exports.MonacoDiagnosticCollection = MonacoDiagnosticCollection; | ||
var MonacoModelDiagnostics = /** @class */ (function () { | ||
function MonacoModelDiagnostics(uri, diagnostics, owner, p2m) { | ||
var _this = this; | ||
class MonacoModelDiagnostics { | ||
constructor(uri, diagnostics, owner, p2m) { | ||
this.owner = owner; | ||
@@ -47,40 +44,31 @@ this.p2m = p2m; | ||
this.diagnostics = diagnostics; | ||
monaco.editor.onDidCreateModel(function (model) { return _this.doUpdateModelMarkers(model); }); | ||
monaco.editor.onDidCreateModel(model => this.doUpdateModelMarkers(model)); | ||
} | ||
Object.defineProperty(MonacoModelDiagnostics.prototype, "diagnostics", { | ||
get: function () { | ||
return this._diagnostics; | ||
}, | ||
set: function (diagnostics) { | ||
this._diagnostics = diagnostics; | ||
this._markers = this.p2m.asDiagnostics(diagnostics); | ||
this.updateModelMarkers(); | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoModelDiagnostics.prototype, "markers", { | ||
get: function () { | ||
return this._markers; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
MonacoModelDiagnostics.prototype.dispose = function () { | ||
set diagnostics(diagnostics) { | ||
this._diagnostics = diagnostics; | ||
this._markers = this.p2m.asDiagnostics(diagnostics); | ||
this.updateModelMarkers(); | ||
} | ||
get diagnostics() { | ||
return this._diagnostics; | ||
} | ||
get markers() { | ||
return this._markers; | ||
} | ||
dispose() { | ||
this._markers = []; | ||
this.updateModelMarkers(); | ||
}; | ||
MonacoModelDiagnostics.prototype.updateModelMarkers = function () { | ||
var model = monaco.editor.getModel(this.uri); | ||
this.doUpdateModelMarkers(model); | ||
}; | ||
MonacoModelDiagnostics.prototype.doUpdateModelMarkers = function (model) { | ||
} | ||
updateModelMarkers() { | ||
const model = monaco.editor.getModel(this.uri); | ||
this.doUpdateModelMarkers(model ? model : undefined); | ||
} | ||
doUpdateModelMarkers(model) { | ||
if (model && this.uri.toString() === model.uri.toString()) { | ||
monaco.editor.setModelMarkers(model, this.owner, this._markers); | ||
} | ||
}; | ||
return MonacoModelDiagnostics; | ||
}()); | ||
} | ||
} | ||
exports.MonacoModelDiagnostics = MonacoModelDiagnostics; | ||
}); | ||
//# sourceMappingURL=monaco-diagnostic-collection.js.map |
@@ -1,4 +0,4 @@ | ||
import { BaseLanguageClient, MessageTransports, LanguageClientOptions } from "vscode-base-languageclient/lib/client"; | ||
import { BaseLanguageClient, MessageTransports, LanguageClientOptions } from "vscode-languageclient/lib/client"; | ||
import { IConnectionProvider, IConnection } from './connection'; | ||
export * from 'vscode-base-languageclient/lib/client'; | ||
export * from 'vscode-languageclient/lib/client'; | ||
export declare class MonacoLanguageClient extends BaseLanguageClient { | ||
@@ -5,0 +5,0 @@ static bypassConversion: (result: any) => any; |
@@ -1,15 +0,2 @@ | ||
var __extends = (this && this.__extends) || (function () { | ||
var extendStatics = function (d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
} | ||
return function (d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
})(); | ||
define(["require", "exports", "vscode-base-languageclient/lib/client", "vscode-base-languageclient/lib/typeDefinition", "vscode-base-languageclient/lib/implementation", "vscode-base-languageclient/lib/colorProvider", "vscode-base-languageclient/lib/workspaceFolders", "vscode-base-languageclient/lib/foldingRange", "vscode-base-languageclient/lib/client"], function (require, exports, client_1, typeDefinition_1, implementation_1, colorProvider_1, workspaceFolders_1, foldingRange_1, client_2) { | ||
define(["require", "exports", "vscode-languageclient/lib/client", "vscode-languageclient/lib/typeDefinition", "vscode-languageclient/lib/configuration", "vscode-languageclient/lib/implementation", "vscode-languageclient/lib/colorProvider", "vscode-languageclient/lib/workspaceFolders", "vscode-languageclient/lib/foldingRange", "vscode-languageclient/lib/declaration", "vscode-languageclient/lib/client"], function (require, exports, client_1, typeDefinition_1, configuration_1, implementation_1, colorProvider_1, workspaceFolders_1, foldingRange_1, declaration_1, client_2) { | ||
"use strict"; | ||
@@ -21,13 +8,11 @@ function __export(m) { | ||
__export(client_2); | ||
var MonacoLanguageClient = /** @class */ (function (_super) { | ||
__extends(MonacoLanguageClient, _super); | ||
function MonacoLanguageClient(_a) { | ||
var id = _a.id, name = _a.name, clientOptions = _a.clientOptions, connectionProvider = _a.connectionProvider; | ||
var _this = _super.call(this, id || name.toLowerCase(), name, clientOptions) || this; | ||
_this.connectionProvider = connectionProvider; | ||
_this.createConnection = _this.doCreateConnection.bind(_this); | ||
class MonacoLanguageClient extends client_1.BaseLanguageClient { | ||
constructor({ id, name, clientOptions, connectionProvider }) { | ||
super(id || name.toLowerCase(), name, clientOptions); | ||
this.connectionProvider = connectionProvider; | ||
this.createConnection = this.doCreateConnection.bind(this); | ||
// bypass LSP <=> VS Code conversion | ||
var self = _this; | ||
const self = this; | ||
self._p2c = new Proxy(self._p2c, { | ||
get: function (target, prop) { | ||
get: (target, prop) => { | ||
if (prop === 'asUri') { | ||
@@ -40,3 +25,3 @@ return target[prop]; | ||
self._c2p = new Proxy(self._c2p, { | ||
get: function (target, prop) { | ||
get: (target, prop) => { | ||
if (prop === 'asUri') { | ||
@@ -46,7 +31,7 @@ return target[prop]; | ||
if (prop === 'asCompletionParams') { | ||
return function (textDocument, position, context) { | ||
return (textDocument, position, context) => { | ||
return { | ||
textDocument: target.asTextDocumentIdentifier(textDocument), | ||
position: position, | ||
context: context | ||
position, | ||
context | ||
}; | ||
@@ -56,3 +41,3 @@ }; | ||
if (prop === 'asWillSaveTextDocumentParams') { | ||
return function (event) { | ||
return (event) => { | ||
return { | ||
@@ -70,14 +55,14 @@ textDocument: target.asTextDocumentIdentifier(event.document), | ||
}); | ||
return _this; | ||
} | ||
MonacoLanguageClient.prototype.doCreateConnection = function () { | ||
var errorHandler = this.handleConnectionError.bind(this); | ||
var closeHandler = this.handleConnectionClosed.bind(this); | ||
doCreateConnection() { | ||
const errorHandler = this.handleConnectionError.bind(this); | ||
const closeHandler = this.handleConnectionClosed.bind(this); | ||
return this.connectionProvider.get(errorHandler, closeHandler, this.outputChannel); | ||
}; | ||
MonacoLanguageClient.prototype.createMessageTransports = function (encoding) { | ||
} | ||
createMessageTransports(encoding) { | ||
throw new Error('Unsupported'); | ||
}; | ||
MonacoLanguageClient.prototype.registerBuiltinFeatures = function () { | ||
_super.prototype.registerBuiltinFeatures.call(this); | ||
} | ||
registerBuiltinFeatures() { | ||
super.registerBuiltinFeatures(); | ||
this.registerFeature(new configuration_1.ConfigurationFeature(this)); | ||
this.registerFeature(new typeDefinition_1.TypeDefinitionFeature(this)); | ||
@@ -87,11 +72,19 @@ this.registerFeature(new implementation_1.ImplementationFeature(this)); | ||
this.registerFeature(new workspaceFolders_1.WorkspaceFoldersFeature(this)); | ||
var foldingRangeFeature = new foldingRange_1.FoldingRangeFeature(this); | ||
const foldingRangeFeature = new foldingRange_1.FoldingRangeFeature(this); | ||
foldingRangeFeature['asFoldingRanges'] = MonacoLanguageClient.bypassConversion; | ||
this.registerFeature(foldingRangeFeature); | ||
}; | ||
MonacoLanguageClient.bypassConversion = function (result) { return result || undefined; }; | ||
return MonacoLanguageClient; | ||
}(client_1.BaseLanguageClient)); | ||
this.registerFeature(new declaration_1.DeclarationFeature(this)); | ||
const features = this['_features']; | ||
for (const feature of features) { | ||
if (feature instanceof colorProvider_1.ColorProviderFeature) { | ||
feature['asColor'] = MonacoLanguageClient.bypassConversion; | ||
feature['asColorInformations'] = MonacoLanguageClient.bypassConversion; | ||
feature['asColorPresentations'] = MonacoLanguageClient.bypassConversion; | ||
} | ||
} | ||
} | ||
} | ||
MonacoLanguageClient.bypassConversion = (result) => result || undefined; | ||
exports.MonacoLanguageClient = MonacoLanguageClient; | ||
}); | ||
//# sourceMappingURL=monaco-language-client.js.map |
@@ -0,1 +1,9 @@ | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
define(["require", "exports", "glob-to-regexp", "./services", "./monaco-diagnostic-collection", "./disposable"], function (require, exports, globToRegExp, services_1, monaco_diagnostic_collection_1, disposable_1) { | ||
@@ -22,3 +30,3 @@ "use strict"; | ||
function testGlob(pattern, value) { | ||
var regExp = globToRegExp(pattern, { | ||
const regExp = globToRegExp(pattern, { | ||
extended: true, | ||
@@ -31,5 +39,4 @@ globstar: true | ||
function getLanguages() { | ||
var languages = []; | ||
for (var _i = 0, _a = monaco.languages.getLanguages().map(function (l) { return l.id; }); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
const languages = []; | ||
for (const language of monaco.languages.getLanguages().map(l => l.id)) { | ||
if (languages.indexOf(language) === -1) { | ||
@@ -42,22 +49,17 @@ languages.push(language); | ||
exports.getLanguages = getLanguages; | ||
var MonacoLanguages = /** @class */ (function () { | ||
function MonacoLanguages(p2m, m2p) { | ||
class MonacoLanguages { | ||
constructor(p2m, m2p) { | ||
this.p2m = p2m; | ||
this.m2p = m2p; | ||
} | ||
MonacoLanguages.prototype.match = function (selector, document) { | ||
match(selector, document) { | ||
return this.matchModel(selector, MonacoModelIdentifier.fromDocument(document)); | ||
}; | ||
MonacoLanguages.prototype.createDiagnosticCollection = function (name) { | ||
} | ||
createDiagnosticCollection(name) { | ||
return new monaco_diagnostic_collection_1.MonacoDiagnosticCollection(name || 'default', this.p2m); | ||
}; | ||
MonacoLanguages.prototype.registerCompletionItemProvider = function (selector, provider) { | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
var completionProvider = this.createCompletionProvider.apply(this, [selector, provider].concat(triggerCharacters)); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _a = 0, _b = getLanguages(); _a < _b.length; _a++) { | ||
var language = _b[_a]; | ||
} | ||
registerCompletionItemProvider(selector, provider, ...triggerCharacters) { | ||
const completionProvider = this.createCompletionProvider(selector, provider, ...triggerCharacters); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -69,33 +71,31 @@ providers.push(monaco.languages.registerCompletionItemProvider(language, completionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createCompletionProvider = function (selector, provider) { | ||
var _this = this; | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
} | ||
createCompletionProvider(selector, provider, ...triggerCharacters) { | ||
return { | ||
triggerCharacters: triggerCharacters, | ||
provideCompletionItems: function (model, position, token, context) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
triggerCharacters, | ||
provideCompletionItems: (model, position, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asCompletionParams(model, position, context); | ||
return provider.provideCompletionItems(params, token).then(function (result) { return _this.p2m.asCompletionResult(result); }); | ||
}, | ||
resolveCompletionItem: provider.resolveCompletionItem ? function (item, token) { | ||
var protocolItem = _this.m2p.asCompletionItem(item); | ||
return provider.resolveCompletionItem(protocolItem, token).then(function (resolvedItem) { | ||
var resolvedCompletionItem = _this.p2m.asCompletionItem(resolvedItem); | ||
const wordUntil = model.getWordUntilPosition(position); | ||
const defaultRange = new monaco.Range(position.lineNumber, wordUntil.startColumn, position.lineNumber, wordUntil.endColumn); | ||
const params = this.m2p.asCompletionParams(model, position, context); | ||
const result = yield provider.provideCompletionItems(params, token); | ||
return result && this.p2m.asCompletionResult(result, defaultRange); | ||
}), | ||
resolveCompletionItem: provider.resolveCompletionItem ? (model, position, item, token) => __awaiter(this, void 0, void 0, function* () { | ||
const protocolItem = this.m2p.asCompletionItem(item); | ||
const resolvedItem = yield provider.resolveCompletionItem(protocolItem, token); | ||
if (resolvedItem) { | ||
const resolvedCompletionItem = this.p2m.asCompletionItem(resolvedItem, item.range); | ||
Object.assign(item, resolvedCompletionItem); | ||
return item; | ||
}); | ||
} : undefined | ||
} | ||
return item; | ||
}) : undefined | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerHoverProvider = function (selector, provider) { | ||
var hoverProvider = this.createHoverProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerHoverProvider(selector, provider) { | ||
const hoverProvider = this.createHoverProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -106,24 +106,19 @@ providers.push(monaco.languages.registerHoverProvider(language, hoverProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createHoverProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createHoverProvider(selector, provider) { | ||
return { | ||
provideHover: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideHover: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideHover(params, token).then(function (hover) { return _this.p2m.asHover(hover); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const hover = yield provider.provideHover(params, token); | ||
return hover && this.p2m.asHover(hover); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerSignatureHelpProvider = function (selector, provider) { | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
var signatureHelpProvider = this.createSignatureHelpProvider.apply(this, [selector, provider].concat(triggerCharacters)); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _a = 0, _b = getLanguages(); _a < _b.length; _a++) { | ||
var language = _b[_a]; | ||
} | ||
registerSignatureHelpProvider(selector, provider, ...triggerCharacters) { | ||
const signatureHelpProvider = this.createSignatureHelpProvider(selector, provider, ...triggerCharacters); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -134,26 +129,26 @@ providers.push(monaco.languages.registerSignatureHelpProvider(language, signatureHelpProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createSignatureHelpProvider = function (selector, provider) { | ||
var _this = this; | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
var signatureHelpTriggerCharacters = triggerCharacters; | ||
} | ||
createSignatureHelpProvider(selector, provider, ...triggerCharacters) { | ||
const signatureHelpTriggerCharacters = [...(provider.triggerCharacters || triggerCharacters || [])]; | ||
// TODO support regrigger characters after Monaco udpate | ||
return { | ||
signatureHelpTriggerCharacters: signatureHelpTriggerCharacters, | ||
provideSignatureHelp: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
signatureHelpTriggerCharacters, | ||
provideSignatureHelp: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideSignatureHelp(params, token).then(function (signatureHelp) { return _this.p2m.asSignatureHelp(signatureHelp); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const signatureHelp = yield provider.provideSignatureHelp(params, token, { | ||
// TODO pass context from monaco after Monaco udpate | ||
triggerKind: 1, | ||
isRetrigger: false | ||
}); | ||
return signatureHelp && this.p2m.asSignatureHelp(signatureHelp); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDefinitionProvider = function (selector, provider) { | ||
var definitionProvider = this.createDefinitionProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDefinitionProvider(selector, provider) { | ||
const definitionProvider = this.createDefinitionProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -164,20 +159,19 @@ providers.push(monaco.languages.registerDefinitionProvider(language, definitionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDefinitionProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDefinitionProvider(selector, provider) { | ||
return { | ||
provideDefinition: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideDefinition: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideDefinition(params, token).then(function (result) { return _this.p2m.asDefinitionResult(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideDefinition(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerReferenceProvider = function (selector, provider) { | ||
var referenceProvider = this.createReferenceProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerReferenceProvider(selector, provider) { | ||
const referenceProvider = this.createReferenceProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -188,20 +182,19 @@ providers.push(monaco.languages.registerReferenceProvider(language, referenceProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createReferenceProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createReferenceProvider(selector, provider) { | ||
return { | ||
provideReferences: function (model, position, context, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideReferences: (model, position, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asReferenceParams(model, position, context); | ||
return provider.provideReferences(params, token).then(function (result) { return _this.p2m.asReferences(result); }); | ||
} | ||
const params = this.m2p.asReferenceParams(model, position, context); | ||
const result = yield provider.provideReferences(params, token); | ||
return result && this.p2m.asReferences(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentHighlightProvider = function (selector, provider) { | ||
var documentHighlightProvider = this.createDocumentHighlightProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentHighlightProvider(selector, provider) { | ||
const documentHighlightProvider = this.createDocumentHighlightProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -212,20 +205,19 @@ providers.push(monaco.languages.registerDocumentHighlightProvider(language, documentHighlightProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentHighlightProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentHighlightProvider(selector, provider) { | ||
return { | ||
provideDocumentHighlights: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentHighlights: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideDocumentHighlights(params, token).then(function (result) { return _this.p2m.asDocumentHighlights(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideDocumentHighlights(params, token); | ||
return result && this.p2m.asDocumentHighlights(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentSymbolProvider = function (selector, provider) { | ||
var documentSymbolProvider = this.createDocumentSymbolProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentSymbolProvider(selector, provider) { | ||
const documentSymbolProvider = this.createDocumentSymbolProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -236,20 +228,19 @@ providers.push(monaco.languages.registerDocumentSymbolProvider(language, documentSymbolProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentSymbolProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentSymbolProvider(selector, provider) { | ||
return { | ||
provideDocumentSymbols: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentSymbols: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentSymbolParams(model); | ||
return provider.provideDocumentSymbols(params, token).then(function (result) { return _this.p2m.asDocumentSymbols(result); }); | ||
} | ||
const params = this.m2p.asDocumentSymbolParams(model); | ||
const result = yield provider.provideDocumentSymbols(params, token); | ||
return result && this.p2m.asDocumentSymbols(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerCodeActionsProvider = function (selector, provider) { | ||
var codeActionProvider = this.createCodeActionProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerCodeActionsProvider(selector, provider) { | ||
const codeActionProvider = this.createCodeActionProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -260,20 +251,21 @@ providers.push(monaco.languages.registerCodeActionProvider(language, codeActionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createCodeActionProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createCodeActionProvider(selector, provider) { | ||
return { | ||
provideCodeActions: function (model, range, context, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideCodeActions: (model, range, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
// FIXME: get rid of `!` when https://github.com/microsoft/monaco-editor/issues/1560 is resolved | ||
return undefined; | ||
} | ||
var params = _this.m2p.asCodeActionParams(model, range, context); | ||
return provider.provideCodeActions(params, token).then(function (result) { return _this.p2m.asCodeActions(result); }); | ||
} | ||
const params = this.m2p.asCodeActionParams(model, range, context); | ||
const result = yield provider.provideCodeActions(params, token); | ||
// FIXME: get rid of `|| undefined!` when https://github.com/microsoft/monaco-editor/issues/1560 is resolved | ||
return result && this.p2m.asCodeActions(result) || undefined; | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerCodeLensProvider = function (selector, provider) { | ||
var codeLensProvider = this.createCodeLensProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerCodeLensProvider(selector, provider) { | ||
const codeLensProvider = this.createCodeLensProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -284,31 +276,31 @@ providers.push(monaco.languages.registerCodeLensProvider(language, codeLensProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createCodeLensProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createCodeLensProvider(selector, provider) { | ||
return { | ||
provideCodeLenses: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideCodeLenses: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asCodeLensParams(model); | ||
return provider.provideCodeLenses(params, token).then(function (result) { return _this.p2m.asCodeLenses(result); }); | ||
}, | ||
resolveCodeLens: provider.resolveCodeLens ? function (model, codeLens, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
const params = this.m2p.asCodeLensParams(model); | ||
const result = yield provider.provideCodeLenses(params, token); | ||
return result && this.p2m.asCodeLenses(result); | ||
}), | ||
resolveCodeLens: provider.resolveCodeLens ? (model, codeLens, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return codeLens; | ||
} | ||
var protocolCodeLens = _this.m2p.asCodeLens(codeLens); | ||
return provider.resolveCodeLens(protocolCodeLens, token).then(function (result) { | ||
var resolvedCodeLens = _this.p2m.asCodeLens(result); | ||
const protocolCodeLens = this.m2p.asCodeLens(codeLens); | ||
const result = yield provider.resolveCodeLens(protocolCodeLens, token); | ||
if (result) { | ||
const resolvedCodeLens = this.p2m.asCodeLens(result); | ||
Object.assign(codeLens, resolvedCodeLens); | ||
return codeLens; | ||
}); | ||
} : (function (m, codeLens, t) { return codeLens; }) | ||
} | ||
return codeLens; | ||
}) : ((_, codeLens) => codeLens) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentFormattingEditProvider = function (selector, provider) { | ||
var documentFormattingEditProvider = this.createDocumentFormattingEditProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentFormattingEditProvider(selector, provider) { | ||
const documentFormattingEditProvider = this.createDocumentFormattingEditProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -319,20 +311,19 @@ providers.push(monaco.languages.registerDocumentFormattingEditProvider(language, documentFormattingEditProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentFormattingEditProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentFormattingEditProvider(selector, provider) { | ||
return { | ||
provideDocumentFormattingEdits: function (model, options, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentFormattingEdits: (model, options, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentFormattingParams(model, options); | ||
return provider.provideDocumentFormattingEdits(params, token).then(function (result) { return _this.p2m.asTextEdits(result); }); | ||
} | ||
const params = this.m2p.asDocumentFormattingParams(model, options); | ||
const result = yield provider.provideDocumentFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentRangeFormattingEditProvider = function (selector, provider) { | ||
var documentRangeFormattingEditProvider = this.createDocumentRangeFormattingEditProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentRangeFormattingEditProvider(selector, provider) { | ||
const documentRangeFormattingEditProvider = this.createDocumentRangeFormattingEditProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -343,24 +334,19 @@ providers.push(monaco.languages.registerDocumentRangeFormattingEditProvider(language, documentRangeFormattingEditProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentRangeFormattingEditProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentRangeFormattingEditProvider(selector, provider) { | ||
return { | ||
provideDocumentRangeFormattingEdits: function (model, range, options, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentRangeFormattingEdits: (model, range, options, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentRangeFormattingParams(model, range, options); | ||
return provider.provideDocumentRangeFormattingEdits(params, token).then(function (result) { return _this.p2m.asTextEdits(result); }); | ||
} | ||
const params = this.m2p.asDocumentRangeFormattingParams(model, range, options); | ||
const result = yield provider.provideDocumentRangeFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerOnTypeFormattingEditProvider = function (selector, provider, firstTriggerCharacter) { | ||
var moreTriggerCharacter = []; | ||
for (var _i = 3; _i < arguments.length; _i++) { | ||
moreTriggerCharacter[_i - 3] = arguments[_i]; | ||
} | ||
var onTypeFormattingEditProvider = this.createOnTypeFormattingEditProvider.apply(this, [selector, provider, firstTriggerCharacter].concat(moreTriggerCharacter)); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _a = 0, _b = getLanguages(); _a < _b.length; _a++) { | ||
var language = _b[_a]; | ||
} | ||
registerOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter) { | ||
const onTypeFormattingEditProvider = this.createOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -371,26 +357,21 @@ providers.push(monaco.languages.registerOnTypeFormattingEditProvider(language, onTypeFormattingEditProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createOnTypeFormattingEditProvider = function (selector, provider, firstTriggerCharacter) { | ||
var _this = this; | ||
var moreTriggerCharacter = []; | ||
for (var _i = 3; _i < arguments.length; _i++) { | ||
moreTriggerCharacter[_i - 3] = arguments[_i]; | ||
} | ||
var autoFormatTriggerCharacters = [firstTriggerCharacter].concat(moreTriggerCharacter); | ||
} | ||
createOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter) { | ||
const autoFormatTriggerCharacters = [firstTriggerCharacter].concat(moreTriggerCharacter); | ||
return { | ||
autoFormatTriggerCharacters: autoFormatTriggerCharacters, | ||
provideOnTypeFormattingEdits: function (model, position, ch, options, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
autoFormatTriggerCharacters, | ||
provideOnTypeFormattingEdits: (model, position, ch, options, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentOnTypeFormattingParams(model, position, ch, options); | ||
return provider.provideOnTypeFormattingEdits(params, token).then(function (result) { return _this.p2m.asTextEdits(result); }); | ||
} | ||
const params = this.m2p.asDocumentOnTypeFormattingParams(model, position, ch, options); | ||
const result = yield provider.provideOnTypeFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerRenameProvider = function (selector, provider) { | ||
var renameProvider = this.createRenameProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerRenameProvider(selector, provider) { | ||
const renameProvider = this.createRenameProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -401,20 +382,19 @@ providers.push(monaco.languages.registerRenameProvider(language, renameProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createRenameProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createRenameProvider(selector, provider) { | ||
return { | ||
provideRenameEdits: function (model, position, newName, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideRenameEdits: (model, position, newName, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asRenameParams(model, position, newName); | ||
return provider.provideRenameEdits(params, token).then(function (result) { return _this.p2m.asWorkspaceEdit(result); }); | ||
} | ||
const params = this.m2p.asRenameParams(model, position, newName); | ||
const result = yield provider.provideRenameEdits(params, token); | ||
return result && this.p2m.asWorkspaceEdit(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentLinkProvider = function (selector, provider) { | ||
var linkProvider = this.createDocumentLinkProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentLinkProvider(selector, provider) { | ||
const linkProvider = this.createDocumentLinkProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -425,33 +405,32 @@ providers.push(monaco.languages.registerLinkProvider(language, linkProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentLinkProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentLinkProvider(selector, provider) { | ||
return { | ||
provideLinks: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideLinks: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentLinkParams(model); | ||
return provider.provideDocumentLinks(params, token).then(function (result) { return _this.p2m.asDocumentLinks(result); }); | ||
}, | ||
resolveLink: function (link, token) { | ||
const params = this.m2p.asDocumentLinkParams(model); | ||
const result = yield provider.provideDocumentLinks(params, token); | ||
return result && this.p2m.asDocumentLinks(result); | ||
}), | ||
resolveLink: (link, token) => __awaiter(this, void 0, void 0, function* () { | ||
// resolve the link if the provider supports it | ||
// and the link doesn't have a url set | ||
if (provider.resolveDocumentLink && (link.url === null || link.url === undefined)) { | ||
var documentLink = _this.m2p.asDocumentLink(link); | ||
return provider.resolveDocumentLink(documentLink, token).then(function (result) { | ||
var resolvedLink = _this.p2m.asDocumentLink(result); | ||
const documentLink = this.m2p.asDocumentLink(link); | ||
const result = yield provider.resolveDocumentLink(documentLink, token); | ||
if (result) { | ||
const resolvedLink = this.p2m.asDocumentLink(result); | ||
Object.assign(link, resolvedLink); | ||
return link; | ||
}); | ||
} | ||
} | ||
return link; | ||
} | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerImplementationProvider = function (selector, provider) { | ||
var implementationProvider = this.createImplementationProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerImplementationProvider(selector, provider) { | ||
const implementationProvider = this.createImplementationProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -462,20 +441,19 @@ providers.push(monaco.languages.registerImplementationProvider(language, implementationProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createImplementationProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createImplementationProvider(selector, provider) { | ||
return { | ||
provideImplementation: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideImplementation: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideImplementation(params, token).then(function (result) { return _this.p2m.asDefinitionResult(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideImplementation(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerTypeDefinitionProvider = function (selector, provider) { | ||
var typeDefinitionProvider = this.createTypeDefinitionProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerTypeDefinitionProvider(selector, provider) { | ||
const typeDefinitionProvider = this.createTypeDefinitionProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -486,20 +464,19 @@ providers.push(monaco.languages.registerTypeDefinitionProvider(language, typeDefinitionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createTypeDefinitionProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createTypeDefinitionProvider(selector, provider) { | ||
return { | ||
provideTypeDefinition: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideTypeDefinition: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideTypeDefinition(params, token).then(function (result) { return _this.p2m.asDefinitionResult(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideTypeDefinition(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerColorProvider = function (selector, provider) { | ||
var documentColorProvider = this.createDocumentColorProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerColorProvider(selector, provider) { | ||
const documentColorProvider = this.createDocumentColorProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -510,32 +487,32 @@ providers.push(monaco.languages.registerColorProvider(language, documentColorProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentColorProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentColorProvider(selector, provider) { | ||
return { | ||
provideDocumentColors: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentColors: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var textDocument = _this.m2p.asTextDocumentIdentifier(model); | ||
return provider.provideDocumentColors({ textDocument: textDocument }, token).then(function (result) { return _this.p2m.asColorInformations(result); }); | ||
}, | ||
provideColorPresentations: function (model, info, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const result = yield provider.provideDocumentColors({ textDocument }, token); | ||
return result && this.p2m.asColorInformations(result); | ||
}), | ||
provideColorPresentations: (model, info, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var textDocument = _this.m2p.asTextDocumentIdentifier(model); | ||
var range = _this.m2p.asRange(info.range); | ||
return provider.provideColorPresentations({ | ||
textDocument: textDocument, | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const range = this.m2p.asRange(info.range); | ||
const result = yield provider.provideColorPresentations({ | ||
textDocument, | ||
color: info.color, | ||
range: range | ||
}, token).then(function (result) { return _this.p2m.asColorPresentations(result); }); | ||
} | ||
range | ||
}, token); | ||
return result && this.p2m.asColorPresentations(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerFoldingRangeProvider = function (selector, provider) { | ||
var foldingRangeProvider = this.createFoldingRangeProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerFoldingRangeProvider(selector, provider) { | ||
const foldingRangeProvider = this.createFoldingRangeProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -546,21 +523,20 @@ providers.push(monaco.languages.registerFoldingRangeProvider(language, foldingRangeProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createFoldingRangeProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createFoldingRangeProvider(selector, provider) { | ||
return { | ||
provideFoldingRanges: function (model, context, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideFoldingRanges: (model, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var textDocument = _this.m2p.asTextDocumentIdentifier(model); | ||
return provider.provideFoldingRanges({ | ||
textDocument: textDocument | ||
}, token).then(function (result) { return _this.p2m.asFoldingRanges(result); }); | ||
} | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const result = yield provider.provideFoldingRanges({ | ||
textDocument | ||
}, token); | ||
return result && this.p2m.asFoldingRanges(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.matchModel = function (selector, model) { | ||
var _this = this; | ||
} | ||
matchModel(selector, model) { | ||
if (Array.isArray(selector)) { | ||
return selector.some(function (filter) { return _this.matchModel(filter, model); }); | ||
return selector.some(filter => this.matchModel(filter, model)); | ||
} | ||
@@ -580,7 +556,6 @@ if (services_1.DocumentFilter.is(selector)) { | ||
return selector === model.languageId; | ||
}; | ||
MonacoLanguages.prototype.matchLanguage = function (selector, languageId) { | ||
var _this = this; | ||
} | ||
matchLanguage(selector, languageId) { | ||
if (Array.isArray(selector)) { | ||
return selector.some(function (filter) { return _this.matchLanguage(filter, languageId); }); | ||
return selector.some(filter => this.matchLanguage(filter, languageId)); | ||
} | ||
@@ -591,7 +566,6 @@ if (services_1.DocumentFilter.is(selector)) { | ||
return selector === languageId; | ||
}; | ||
return MonacoLanguages; | ||
}()); | ||
} | ||
} | ||
exports.MonacoLanguages = MonacoLanguages; | ||
}); | ||
//# sourceMappingURL=monaco-languages.js.map |
@@ -6,6 +6,5 @@ define(["require", "exports", "./monaco-converter", "./monaco-commands", "./monaco-languages", "./monaco-workspace", "./console-window", "./services"], function (require, exports, monaco_converter_1, monaco_commands_1, monaco_languages_1, monaco_workspace_1, console_window_1, services_1) { | ||
(function (MonacoServices) { | ||
function create(editor, options) { | ||
if (options === void 0) { options = {}; } | ||
var m2p = new monaco_converter_1.MonacoToProtocolConverter(); | ||
var p2m = new monaco_converter_1.ProtocolToMonacoConverter(); | ||
function create(editor, options = {}) { | ||
const m2p = new monaco_converter_1.MonacoToProtocolConverter(); | ||
const p2m = new monaco_converter_1.ProtocolToMonacoConverter(); | ||
return { | ||
@@ -19,5 +18,4 @@ commands: new monaco_commands_1.MonacoCommands(editor), | ||
MonacoServices.create = create; | ||
function install(editor, options) { | ||
if (options === void 0) { options = {}; } | ||
var services = create(editor, options); | ||
function install(editor, options = {}) { | ||
const services = create(editor, options); | ||
services_1.Services.install(services); | ||
@@ -24,0 +22,0 @@ return services; |
define(["require", "exports", "./services"], function (require, exports, services_1) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var MonacoWorkspace = /** @class */ (function () { | ||
function MonacoWorkspace(p2m, m2p, _rootUri) { | ||
if (_rootUri === void 0) { _rootUri = null; } | ||
var _this = this; | ||
class MonacoWorkspace { | ||
constructor(p2m, m2p, _rootUri = null) { | ||
this.p2m = p2m; | ||
@@ -15,19 +13,14 @@ this.m2p = m2p; | ||
this.onDidChangeTextDocumentEmitter = new services_1.Emitter(); | ||
for (var _i = 0, _a = monaco.editor.getModels(); _i < _a.length; _i++) { | ||
var model = _a[_i]; | ||
for (const model of monaco.editor.getModels()) { | ||
this.addModel(model); | ||
} | ||
monaco.editor.onDidCreateModel(function (model) { return _this.addModel(model); }); | ||
monaco.editor.onWillDisposeModel(function (model) { return _this.removeModel(model); }); | ||
monaco.editor.onDidCreateModel(model => this.addModel(model)); | ||
monaco.editor.onWillDisposeModel(model => this.removeModel(model)); | ||
} | ||
Object.defineProperty(MonacoWorkspace.prototype, "rootUri", { | ||
get: function () { | ||
return this._rootUri; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
MonacoWorkspace.prototype.removeModel = function (model) { | ||
var uri = model.uri.toString(); | ||
var document = this.documents.get(uri); | ||
get rootUri() { | ||
return this._rootUri; | ||
} | ||
removeModel(model) { | ||
const uri = model.uri.toString(); | ||
const document = this.documents.get(uri); | ||
if (document) { | ||
@@ -37,93 +30,72 @@ this.documents.delete(uri); | ||
} | ||
}; | ||
MonacoWorkspace.prototype.addModel = function (model) { | ||
var _this = this; | ||
var uri = model.uri.toString(); | ||
var document = this.setModel(uri, model); | ||
} | ||
addModel(model) { | ||
const uri = model.uri.toString(); | ||
const document = this.setModel(uri, model); | ||
this.onDidOpenTextDocumentEmitter.fire(document); | ||
model.onDidChangeContent(function (event) { | ||
return _this.onDidChangeContent(uri, model, event); | ||
}); | ||
}; | ||
MonacoWorkspace.prototype.onDidChangeContent = function (uri, model, event) { | ||
var textDocument = this.setModel(uri, model); | ||
var contentChanges = []; | ||
for (var _i = 0, _a = event.changes; _i < _a.length; _i++) { | ||
var change = _a[_i]; | ||
var range = this.m2p.asRange(change.range); | ||
var rangeLength = change.rangeLength; | ||
var text = change.text; | ||
contentChanges.push({ range: range, rangeLength: rangeLength, text: text }); | ||
model.onDidChangeContent(event => this.onDidChangeContent(uri, model, event)); | ||
} | ||
onDidChangeContent(uri, model, event) { | ||
const textDocument = this.setModel(uri, model); | ||
const contentChanges = []; | ||
for (const change of event.changes) { | ||
const range = this.m2p.asRange(change.range); | ||
const rangeLength = change.rangeLength; | ||
const text = change.text; | ||
contentChanges.push({ range, rangeLength, text }); | ||
} | ||
this.onDidChangeTextDocumentEmitter.fire({ | ||
textDocument: textDocument, | ||
contentChanges: contentChanges | ||
textDocument, | ||
contentChanges | ||
}); | ||
}; | ||
MonacoWorkspace.prototype.setModel = function (uri, model) { | ||
var document = services_1.TextDocument.create(uri, model.getModeId(), model.getVersionId(), model.getValue()); | ||
} | ||
setModel(uri, model) { | ||
const document = services_1.TextDocument.create(uri, model.getModeId(), model.getVersionId(), model.getValue()); | ||
this.documents.set(uri, document); | ||
return document; | ||
}; | ||
Object.defineProperty(MonacoWorkspace.prototype, "textDocuments", { | ||
get: function () { | ||
return Array.from(this.documents.values()); | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoWorkspace.prototype, "onDidOpenTextDocument", { | ||
get: function () { | ||
return this.onDidOpenTextDocumentEmitter.event; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoWorkspace.prototype, "onDidCloseTextDocument", { | ||
get: function () { | ||
return this.onDidCloseTextDocumentEmitter.event; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoWorkspace.prototype, "onDidChangeTextDocument", { | ||
get: function () { | ||
return this.onDidChangeTextDocumentEmitter.event; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
MonacoWorkspace.prototype.applyEdit = function (workspaceEdit) { | ||
var edit = this.p2m.asWorkspaceEdit(workspaceEdit); | ||
} | ||
get textDocuments() { | ||
return Array.from(this.documents.values()); | ||
} | ||
get onDidOpenTextDocument() { | ||
return this.onDidOpenTextDocumentEmitter.event; | ||
} | ||
get onDidCloseTextDocument() { | ||
return this.onDidCloseTextDocumentEmitter.event; | ||
} | ||
get onDidChangeTextDocument() { | ||
return this.onDidChangeTextDocumentEmitter.event; | ||
} | ||
applyEdit(workspaceEdit) { | ||
const edit = this.p2m.asWorkspaceEdit(workspaceEdit); | ||
// Collect all referenced models | ||
var models = edit.edits.reduce(function (acc, currentEdit) { | ||
var textEdit = currentEdit; | ||
const models = edit.edits ? edit.edits.reduce((acc, currentEdit) => { | ||
const textEdit = currentEdit; | ||
acc[textEdit.resource.toString()] = monaco.editor.getModel(textEdit.resource); | ||
return acc; | ||
}, {}); | ||
}, {}) : {}; | ||
// If any of the models do not exist, refuse to apply the edit. | ||
if (!Object.keys(models).map(function (uri) { return models[uri]; }).every(function (model) { return !!model; })) { | ||
if (!Object.keys(models).map(uri => models[uri]).every(model => !!model)) { | ||
return Promise.resolve(false); | ||
} | ||
// Group edits by resource so we can batch them when applying | ||
var editsByResource = edit.edits.reduce(function (acc, currentEdit) { | ||
var _a; | ||
var textEdit = currentEdit; | ||
var uri = textEdit.resource.toString(); | ||
const editsByResource = edit.edits ? edit.edits.reduce((acc, currentEdit) => { | ||
const textEdit = currentEdit; | ||
const uri = textEdit.resource.toString(); | ||
if (!(uri in acc)) { | ||
acc[uri] = []; | ||
} | ||
var operations = textEdit.edits.map(function (edit) { | ||
const operations = textEdit.edits.map(edit => { | ||
return { | ||
range: monaco.Range.lift(edit.range), | ||
text: edit.text | ||
text: edit.text, | ||
}; | ||
}); | ||
(_a = acc[uri]).push.apply(_a, operations); | ||
acc[uri].push(...operations); | ||
return acc; | ||
}, {}); | ||
}, {}) : {}; | ||
// Apply edits for each resource | ||
Object.keys(editsByResource).forEach(function (uri) { | ||
Object.keys(editsByResource).forEach(uri => { | ||
models[uri].pushEditOperations([], // Do not try and preserve editor selections. | ||
editsByResource[uri].map(function (resourceEdit) { | ||
editsByResource[uri].map(resourceEdit => { | ||
return { | ||
@@ -135,10 +107,9 @@ identifier: { major: 1, minor: 0 }, | ||
}; | ||
}), function () { return []; }); | ||
}), () => []); | ||
}); | ||
return Promise.resolve(true); | ||
}; | ||
return MonacoWorkspace; | ||
}()); | ||
} | ||
} | ||
exports.MonacoWorkspace = MonacoWorkspace; | ||
}); | ||
//# sourceMappingURL=monaco-workspace.js.map |
@@ -8,6 +8,6 @@ /* -------------------------------------------------------------------------------------------- | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var Module = module.parent.require('module'); | ||
var originalRequire = Module.prototype.require; | ||
const Module = module.parent.require('module'); | ||
const originalRequire = Module.prototype.require; | ||
Module.prototype.require = function (id, options) { | ||
var resolvedId = id === 'vscode' ? path.resolve(__dirname, 'vscode-compatibility.js') : id; | ||
const resolvedId = id === 'vscode' ? path.resolve(__dirname, 'vscode-compatibility.js') : id; | ||
return originalRequire.call(this, resolvedId, options); | ||
@@ -14,0 +14,0 @@ }; |
@@ -1,2 +0,2 @@ | ||
import { DocumentSelector, MessageActionItem, MessageType, TextDocumentPositionParams, ReferenceParams, CodeActionParams, CodeLensParams, DocumentFormattingParams, DocumentRangeFormattingParams, DocumentOnTypeFormattingParams, RenameParams, DocumentLinkParams, WorkspaceClientCapabilities, DidChangeTextDocumentParams, Diagnostic, TextDocument, CompletionItem, CompletionList, Hover, SignatureHelp, Definition, Location, DocumentHighlight, SymbolInformation, Command, CodeLens, TextEdit, WorkspaceEdit, DocumentLink, TextDocumentSaveReason, DocumentSymbolParams, WorkspaceSymbolParams, TextDocumentContentChangeEvent, CompletionParams, ColorInformation, ColorPresentation, DocumentColorParams, ColorPresentationParams, FoldingRange, FoldingRangeRequestParam, DocumentSymbol, CodeAction } from 'vscode-languageserver-protocol/lib/main'; | ||
import { DocumentSelector, MessageActionItem, MessageType, TextDocumentPositionParams, ReferenceParams, CodeActionParams, CodeLensParams, DocumentFormattingParams, DocumentRangeFormattingParams, DocumentOnTypeFormattingParams, RenameParams, DocumentLinkParams, WorkspaceClientCapabilities, DidChangeTextDocumentParams, Diagnostic, TextDocument, CompletionItem, CompletionList, Hover, SignatureHelp, Definition, Location, DocumentHighlight, SymbolInformation, Command, CodeLens, TextEdit, WorkspaceEdit, DocumentLink, TextDocumentSaveReason, DocumentSymbolParams, WorkspaceSymbolParams, TextDocumentContentChangeEvent, CompletionParams, ColorInformation, ColorPresentation, DocumentColorParams, ColorPresentationParams, FoldingRange, FoldingRangeRequestParam, DocumentSymbol, CodeAction, Declaration, SelectionRangeParams, SelectionRange } from 'vscode-languageserver-protocol'; | ||
import { Disposable, CancellationToken, Event, Emitter } from 'vscode-jsonrpc'; | ||
@@ -21,49 +21,63 @@ import Uri from 'vscode-uri'; | ||
} | ||
export declare type ProviderResult<T> = T | undefined | null | PromiseLike<T | undefined | null>; | ||
export interface CompletionItemProvider { | ||
provideCompletionItems(params: CompletionParams, token: CancellationToken): Thenable<CompletionItem[] | CompletionList>; | ||
resolveCompletionItem?(item: CompletionItem, token: CancellationToken): Thenable<CompletionItem>; | ||
provideCompletionItems(params: CompletionParams, token: CancellationToken): ProviderResult<CompletionItem[] | CompletionList>; | ||
resolveCompletionItem?(item: CompletionItem, token: CancellationToken): ProviderResult<CompletionItem>; | ||
} | ||
export interface HoverProvider { | ||
provideHover(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Hover>; | ||
provideHover(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Hover>; | ||
} | ||
export declare enum SignatureHelpTriggerKind { | ||
Invoke = 1, | ||
TriggerCharacter = 2, | ||
ContentChange = 3 | ||
} | ||
export interface SignatureHelpContext { | ||
readonly triggerKind: SignatureHelpTriggerKind; | ||
readonly triggerCharacter?: string; | ||
readonly isRetrigger: boolean; | ||
readonly activeSignatureHelp?: SignatureHelp; | ||
} | ||
export interface SignatureHelpProvider { | ||
provideSignatureHelp(params: TextDocumentPositionParams, token: CancellationToken): Thenable<SignatureHelp>; | ||
readonly triggerCharacters?: ReadonlyArray<string>; | ||
readonly retriggerCharacters?: ReadonlyArray<string>; | ||
provideSignatureHelp(params: TextDocumentPositionParams, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>; | ||
} | ||
export interface DefinitionProvider { | ||
provideDefinition(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideDefinition(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface ReferenceProvider { | ||
provideReferences(params: ReferenceParams, token: CancellationToken): Thenable<Location[]>; | ||
provideReferences(params: ReferenceParams, token: CancellationToken): ProviderResult<Location[]>; | ||
} | ||
export interface DocumentHighlightProvider { | ||
provideDocumentHighlights(params: TextDocumentPositionParams, token: CancellationToken): Thenable<DocumentHighlight[]>; | ||
provideDocumentHighlights(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<DocumentHighlight[]>; | ||
} | ||
export interface DocumentSymbolProvider { | ||
provideDocumentSymbols(params: DocumentSymbolParams, token: CancellationToken): Thenable<SymbolInformation[] | DocumentSymbol[]>; | ||
provideDocumentSymbols(params: DocumentSymbolParams, token: CancellationToken): ProviderResult<SymbolInformation[] | DocumentSymbol[]>; | ||
} | ||
export interface WorkspaceSymbolProvider { | ||
provideWorkspaceSymbols(params: WorkspaceSymbolParams, token: CancellationToken): Thenable<SymbolInformation[]>; | ||
provideWorkspaceSymbols(params: WorkspaceSymbolParams, token: CancellationToken): ProviderResult<SymbolInformation[]>; | ||
} | ||
export interface CodeActionProvider { | ||
provideCodeActions(params: CodeActionParams, token: CancellationToken): Thenable<(Command | CodeAction)[]>; | ||
provideCodeActions(params: CodeActionParams, token: CancellationToken): ProviderResult<(Command | CodeAction)[]>; | ||
} | ||
export interface CodeLensProvider { | ||
provideCodeLenses(params: CodeLensParams, token: CancellationToken): Thenable<CodeLens[]>; | ||
resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): Thenable<CodeLens>; | ||
provideCodeLenses(params: CodeLensParams, token: CancellationToken): ProviderResult<CodeLens[]>; | ||
resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): ProviderResult<CodeLens>; | ||
} | ||
export interface DocumentFormattingEditProvider { | ||
provideDocumentFormattingEdits(params: DocumentFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideDocumentFormattingEdits(params: DocumentFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface DocumentRangeFormattingEditProvider { | ||
provideDocumentRangeFormattingEdits(params: DocumentRangeFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideDocumentRangeFormattingEdits(params: DocumentRangeFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface OnTypeFormattingEditProvider { | ||
provideOnTypeFormattingEdits(params: DocumentOnTypeFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideOnTypeFormattingEdits(params: DocumentOnTypeFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface RenameProvider { | ||
provideRenameEdits(params: RenameParams, token: CancellationToken): Thenable<WorkspaceEdit>; | ||
provideRenameEdits(params: RenameParams, token: CancellationToken): ProviderResult<WorkspaceEdit>; | ||
} | ||
export interface DocumentLinkProvider { | ||
provideDocumentLinks(params: DocumentLinkParams, token: CancellationToken): Thenable<DocumentLink[]>; | ||
resolveDocumentLink?(link: DocumentLink, token: CancellationToken): Thenable<DocumentLink>; | ||
provideDocumentLinks(params: DocumentLinkParams, token: CancellationToken): ProviderResult<DocumentLink[]>; | ||
resolveDocumentLink?(link: DocumentLink, token: CancellationToken): ProviderResult<DocumentLink>; | ||
} | ||
@@ -78,14 +92,20 @@ export interface DocumentIdentifier { | ||
export interface ImplementationProvider { | ||
provideImplementation(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideImplementation(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface TypeDefinitionProvider { | ||
provideTypeDefinition(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideTypeDefinition(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface DeclarationProvider { | ||
provideDeclaration(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Declaration>; | ||
} | ||
export interface DocumentColorProvider { | ||
provideDocumentColors(params: DocumentColorParams, token: CancellationToken): Thenable<ColorInformation[]>; | ||
provideColorPresentations(params: ColorPresentationParams, token: CancellationToken): Thenable<ColorPresentation[]>; | ||
provideDocumentColors(params: DocumentColorParams, token: CancellationToken): ProviderResult<ColorInformation[]>; | ||
provideColorPresentations(params: ColorPresentationParams, token: CancellationToken): ProviderResult<ColorPresentation[]>; | ||
} | ||
export interface FoldingRangeProvider { | ||
provideFoldingRanges(params: FoldingRangeRequestParam, token: CancellationToken): Thenable<FoldingRange[]>; | ||
provideFoldingRanges(params: FoldingRangeRequestParam, token: CancellationToken): ProviderResult<FoldingRange[]>; | ||
} | ||
export interface SelectionRangeProvider { | ||
provideSelectionRanges(params: SelectionRangeParams, token: CancellationToken): ProviderResult<SelectionRange[]>; | ||
} | ||
export interface Languages { | ||
@@ -96,3 +116,3 @@ match(selector: DocumentSelector, document: DocumentIdentifier): boolean; | ||
registerHoverProvider?(selector: DocumentSelector, provider: HoverProvider): Disposable; | ||
registerSignatureHelpProvider?(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable; | ||
registerSignatureHelpProvider?(selector: DocumentSelector, provider: SignatureHelpProvider): Disposable; | ||
registerDefinitionProvider?(selector: DocumentSelector, provider: DefinitionProvider): Disposable; | ||
@@ -112,4 +132,6 @@ registerReferenceProvider?(selector: DocumentSelector, provider: ReferenceProvider): Disposable; | ||
registerTypeDefinitionProvider?(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable; | ||
registerDeclarationProvider?(selector: DocumentSelector, provider: DeclarationProvider): Disposable; | ||
registerColorProvider?(selector: DocumentSelector, provider: DocumentColorProvider): Disposable; | ||
registerFoldingRangeProvider?(selector: DocumentSelector, provider: FoldingRangeProvider): Disposable; | ||
registerSelectionRangeProvider?(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable; | ||
} | ||
@@ -123,3 +145,3 @@ export interface TextDocumentDidChangeEvent { | ||
readonly reason: TextDocumentSaveReason; | ||
waitUntil?(thenable: Thenable<TextEdit[]>): void; | ||
waitUntil?(PromiseLike: PromiseLike<TextEdit[]>): void; | ||
} | ||
@@ -154,2 +176,4 @@ export declare enum ConfigurationTarget { | ||
readonly rootUri: string | null; | ||
readonly workspaceFolders?: typeof import('vscode').workspace.workspaceFolders; | ||
readonly onDidChangeWorkspaceFolders?: typeof import('vscode').workspace.onDidChangeWorkspaceFolders; | ||
readonly textDocuments: TextDocument[]; | ||
@@ -162,3 +186,3 @@ readonly onDidOpenTextDocument: Event<TextDocument>; | ||
readonly onDidSaveTextDocument?: Event<TextDocument>; | ||
applyEdit(changes: WorkspaceEdit): Thenable<boolean>; | ||
applyEdit(changes: WorkspaceEdit): PromiseLike<boolean>; | ||
createFileSystemWatcher?(globPattern: string, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher; | ||
@@ -175,5 +199,6 @@ } | ||
export interface Window { | ||
showMessage<T extends MessageActionItem>(type: MessageType, message: string, ...actions: T[]): Thenable<T | undefined>; | ||
showMessage<T extends MessageActionItem>(type: MessageType, message: string, ...actions: T[]): PromiseLike<T | undefined>; | ||
createOutputChannel?(name: string): OutputChannel; | ||
withProgress?: typeof import('vscode').window.withProgress; | ||
} | ||
//# sourceMappingURL=services.d.ts.map |
@@ -1,2 +0,2 @@ | ||
define(["require", "exports", "vscode-languageserver-protocol/lib/main", "vscode-jsonrpc", "vscode-languageserver-protocol/lib/main"], function (require, exports, main_1, vscode_jsonrpc_1, main_2) { | ||
define(["require", "exports", "vscode-languageserver-protocol", "vscode-jsonrpc", "vscode-languageserver-protocol/lib/main"], function (require, exports, vscode_languageserver_protocol_1, vscode_jsonrpc_1, main_1) { | ||
/* -------------------------------------------------------------------------------------------- | ||
@@ -15,9 +15,9 @@ * Copyright (c) 2018 TypeFox GmbH (http://www.typefox.io). All rights reserved. | ||
exports.Emitter = vscode_jsonrpc_1.Emitter; | ||
__export(main_2); | ||
__export(main_1); | ||
var Services; | ||
(function (Services) { | ||
var global = window; | ||
var symbol = Symbol('Services'); | ||
Services.get = function () { | ||
var services = global[symbol]; | ||
const global = window; | ||
const symbol = Symbol('Services'); | ||
Services.get = () => { | ||
const services = global[symbol]; | ||
if (!services) { | ||
@@ -30,3 +30,3 @@ throw new Error('Language Client services has not been installed'); | ||
if (global[symbol]) { | ||
console.error(new Error('Language Client services has been overriden')); | ||
console.error(new Error('Language Client services has been overridden')); | ||
} | ||
@@ -41,5 +41,11 @@ global[symbol] = services; | ||
} | ||
return selector.every(function (value) { return typeof value === 'string' || main_1.DocumentFilter.is(value); }); | ||
return selector.every(value => typeof value === 'string' || vscode_languageserver_protocol_1.DocumentFilter.is(value)); | ||
} | ||
exports.isDocumentSelector = isDocumentSelector; | ||
var SignatureHelpTriggerKind; | ||
(function (SignatureHelpTriggerKind) { | ||
SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke"; | ||
SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter"; | ||
SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange"; | ||
})(SignatureHelpTriggerKind = exports.SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = {})); | ||
var DocumentIdentifier; | ||
@@ -46,0 +52,0 @@ (function (DocumentIdentifier) { |
@@ -13,83 +13,52 @@ /* -------------------------------------------------------------------------------------------- | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
define(["require", "exports", "vscode-uri", "./disposable", "./services"], function (require, exports, vscode_uri_1, disposable_1, services_1) { | ||
define(["require", "exports", "vscode", "vscode-uri", "./disposable", "./services"], function (require, exports, vscode, vscode_uri_1, disposable_1, services_1) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
function createVSCodeApi(servicesProvider) { | ||
var _this = this; | ||
var unsupported = function () { throw new Error('unsupported'); }; | ||
var Uri = vscode_uri_1.default; | ||
var CompletionItem = /** @class */ (function () { | ||
function CompletionItem(label, kind) { | ||
const unsupported = () => { throw new Error('unsupported'); }; | ||
const Uri = vscode_uri_1.default; | ||
class CompletionItem { | ||
constructor(label, kind) { | ||
this.label = label; | ||
this.kind = kind; | ||
} | ||
return CompletionItem; | ||
}()); | ||
var CodeLens = /** @class */ (function () { | ||
function CodeLens(range, command) { | ||
} | ||
class CodeLens { | ||
constructor(range, command) { | ||
this.range = range; | ||
this.command = command; | ||
} | ||
Object.defineProperty(CodeLens.prototype, "isResolved", { | ||
get: function () { | ||
return !!this.command; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
return CodeLens; | ||
}()); | ||
var DocumentLink = /** @class */ (function () { | ||
function DocumentLink(range, target) { | ||
get isResolved() { | ||
return !!this.command; | ||
} | ||
} | ||
class DocumentLink { | ||
constructor(range, target) { | ||
this.range = range; | ||
this.target = target; | ||
} | ||
return DocumentLink; | ||
}()); | ||
var CodeActionKind = /** @class */ (function () { | ||
function CodeActionKind(value) { | ||
} | ||
class CodeActionKind { | ||
constructor(value) { | ||
this.value = value; | ||
this.append = unsupported; | ||
this.contains = unsupported; | ||
this.intersects = unsupported; | ||
} | ||
CodeActionKind.Empty = new CodeActionKind(); | ||
CodeActionKind.QuickFix = new CodeActionKind('quickfix'); | ||
CodeActionKind.Refactor = new CodeActionKind('refactor'); | ||
CodeActionKind.RefactorExtract = new CodeActionKind('refactor.extract'); | ||
CodeActionKind.RefactorInline = new CodeActionKind('refactor.inline'); | ||
CodeActionKind.RefactorRewrite = new CodeActionKind('refactor.rewrite'); | ||
CodeActionKind.Source = new CodeActionKind('source'); | ||
CodeActionKind.SourceOrganizeImports = new CodeActionKind('source.organizeImports'); | ||
return CodeActionKind; | ||
}()); | ||
var workspace = { | ||
createFileSystemWatcher: function (globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents) { | ||
var services = servicesProvider(); | ||
append(parts) { | ||
return new CodeActionKind(this.value ? this.value + CodeActionKind.sep + parts : parts); | ||
} | ||
} | ||
CodeActionKind.sep = '.'; | ||
CodeActionKind.Empty = new CodeActionKind(''); | ||
CodeActionKind.QuickFix = new CodeActionKind('quickfix'); | ||
CodeActionKind.Refactor = new CodeActionKind('refactor'); | ||
CodeActionKind.RefactorExtract = CodeActionKind.Refactor.append('extract'); | ||
CodeActionKind.RefactorInline = CodeActionKind.Refactor.append('inline'); | ||
CodeActionKind.RefactorRewrite = CodeActionKind.Refactor.append('rewrite'); | ||
CodeActionKind.Source = new CodeActionKind('source'); | ||
CodeActionKind.SourceOrganizeImports = CodeActionKind.Source.append('organizeImports'); | ||
CodeActionKind.SourceFixAll = CodeActionKind.Source.append('fixAll'); | ||
const workspace = { | ||
createFileSystemWatcher(globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents) { | ||
const services = servicesProvider(); | ||
if (typeof globPattern !== 'string') { | ||
@@ -99,3 +68,3 @@ throw new Error('unsupported'); | ||
if (services.workspace.createFileSystemWatcher) { | ||
var watcher = services.workspace.createFileSystemWatcher(globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents); | ||
const watcher = services.workspace.createFileSystemWatcher(globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents); | ||
return Object.assign(watcher, { | ||
@@ -114,25 +83,22 @@ ignoreCreateEvents: !!ignoreCreateEvents, | ||
onDidDelete: services_1.Event.None, | ||
dispose: function () { } | ||
dispose: () => { } | ||
}; | ||
}, | ||
applyEdit: function (edit) { return __awaiter(_this, void 0, void 0, function () { | ||
var services; | ||
return __generator(this, function (_a) { | ||
services = servicesProvider(); | ||
if (services_1.WorkspaceEdit.is(edit)) { | ||
return [2 /*return*/, services.workspace.applyEdit(edit)]; | ||
} | ||
throw new Error('unsupported'); | ||
}); | ||
}); }, | ||
getConfiguration: function (section, resource) { | ||
var workspace = servicesProvider().workspace; | ||
var configuration = workspace.configurations ? | ||
applyEdit: (edit) => __awaiter(this, void 0, void 0, function* () { | ||
const services = servicesProvider(); | ||
if (services_1.WorkspaceEdit.is(edit)) { | ||
return services.workspace.applyEdit(edit); | ||
} | ||
throw new Error('unsupported'); | ||
}), | ||
getConfiguration(section, resource) { | ||
const { workspace } = servicesProvider(); | ||
const configuration = workspace.configurations ? | ||
workspace.configurations.getConfiguration(section, resource ? resource.toString() : undefined) : | ||
undefined; | ||
var result = { | ||
get: function (section, defaultValue) { | ||
const result = { | ||
get: (section, defaultValue) => { | ||
return configuration ? configuration.get(section, defaultValue) : defaultValue; | ||
}, | ||
has: function (section) { | ||
has: (section) => { | ||
return configuration ? configuration.has(section) : false; | ||
@@ -144,7 +110,7 @@ }, | ||
return Object.assign(result, { | ||
toJSON: function () { return configuration ? configuration.toJSON() : undefined; } | ||
toJSON: () => configuration ? configuration.toJSON() : undefined | ||
}); | ||
}, | ||
get onDidChangeConfiguration() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
if (services.workspace.configurations) { | ||
@@ -156,10 +122,13 @@ return services.workspace.configurations.onDidChangeConfiguration; | ||
get workspaceFolders() { | ||
var services = servicesProvider(); | ||
var rootUri = services.workspace.rootUri; | ||
const services = servicesProvider(); | ||
if ('workspaceFolders' in services.workspace) { | ||
return services.workspace.workspaceFolders; | ||
} | ||
const rootUri = services.workspace.rootUri; | ||
if (!rootUri) { | ||
return undefined; | ||
} | ||
var uri = Uri.parse(rootUri); | ||
const uri = Uri.parse(rootUri); | ||
return [{ | ||
uri: uri, | ||
uri, | ||
index: 0, | ||
@@ -169,20 +138,23 @@ name: uri.toString() | ||
}, | ||
get onDidChangeWorkspaceFolders() { | ||
const services = servicesProvider(); | ||
return services.workspace.onDidChangeWorkspaceFolders || services_1.Event.None; | ||
}, | ||
get textDocuments() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.textDocuments; | ||
}, | ||
get onDidOpenTextDocument() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.onDidOpenTextDocument; | ||
}, | ||
get onDidCloseTextDocument() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.onDidCloseTextDocument; | ||
}, | ||
get onDidChangeTextDocument() { | ||
var services = servicesProvider(); | ||
return function (listener, thisArgs, disposables) { | ||
return services.workspace.onDidChangeTextDocument(function (_a) { | ||
var textDocument = _a.textDocument, contentChanges = _a.contentChanges; | ||
var l = listener.bind(thisArgs); | ||
const services = servicesProvider(); | ||
return (listener, thisArgs, disposables) => { | ||
return services.workspace.onDidChangeTextDocument(({ textDocument, contentChanges }) => { | ||
const l = listener.bind(thisArgs); | ||
l({ | ||
@@ -196,15 +168,14 @@ document: textDocument, | ||
get onWillSaveTextDocument() { | ||
var services = servicesProvider(); | ||
var onWillSaveTextDocument = services.workspace.onWillSaveTextDocument; | ||
const services = servicesProvider(); | ||
const onWillSaveTextDocument = services.workspace.onWillSaveTextDocument; | ||
if (!onWillSaveTextDocument) { | ||
return services_1.Event.None; | ||
} | ||
return function (listener, thisArgs, disposables) { | ||
return onWillSaveTextDocument(function (_a) { | ||
var textDocument = _a.textDocument, reason = _a.reason, waitUntil = _a.waitUntil; | ||
var l = listener.bind(thisArgs); | ||
return (listener, thisArgs, disposables) => { | ||
return onWillSaveTextDocument(({ textDocument, reason, waitUntil }) => { | ||
const l = listener.bind(thisArgs); | ||
l({ | ||
document: textDocument, | ||
reason: reason, | ||
waitUntil: function (edits) { | ||
waitUntil: (edits) => { | ||
if (waitUntil) { | ||
@@ -219,6 +190,5 @@ waitUntil(edits); | ||
get onDidSaveTextDocument() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.onDidSaveTextDocument || services_1.Event.None; | ||
}, | ||
onDidChangeWorkspaceFolders: services_1.Event.None, | ||
getWorkspaceFolder: unsupported, | ||
@@ -236,4 +206,4 @@ asRelativePath: unsupported, | ||
}; | ||
var languages = { | ||
match: function (selector, document) { | ||
const languages = { | ||
match(selector, document) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
@@ -245,13 +215,13 @@ throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var services = servicesProvider(); | ||
var result = services.languages.match(selector, document); | ||
const services = servicesProvider(); | ||
const result = services.languages.match(selector, document); | ||
return result ? 1 : 0; | ||
}, | ||
createDiagnosticCollection: function (name) { | ||
var services = servicesProvider(); | ||
var collection = services.languages.createDiagnosticCollection ? | ||
createDiagnosticCollection(name) { | ||
const services = servicesProvider(); | ||
const collection = services.languages.createDiagnosticCollection ? | ||
services.languages.createDiagnosticCollection(name) : undefined; | ||
return { | ||
name: name || 'default', | ||
set: function (arg0, arg1) { | ||
set(arg0, arg1) { | ||
if (collection) { | ||
@@ -266,3 +236,3 @@ if (arg1) { | ||
}, | ||
dispose: function () { | ||
dispose() { | ||
if (collection) { | ||
@@ -279,38 +249,32 @@ collection.dispose(); | ||
}, | ||
registerCompletionItemProvider: function (selector, provider) { | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
registerCompletionItemProvider(selector, provider, ...triggerCharacters) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerCompletionItemProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
var resolveCompletionItem = provider.resolveCompletionItem; | ||
return languages.registerCompletionItemProvider.apply(languages, [selector, { | ||
provideCompletionItems: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, context = _a.context; | ||
return provider.provideCompletionItems(textDocument, position, token, context || { | ||
triggerKind: services_1.CompletionTriggerKind.Invoked | ||
}); | ||
}, | ||
resolveCompletionItem: resolveCompletionItem ? function (item, token) { | ||
return resolveCompletionItem(item, token); | ||
} : undefined | ||
}].concat(triggerCharacters)); | ||
const resolveCompletionItem = provider.resolveCompletionItem; | ||
return languages.registerCompletionItemProvider(selector, { | ||
provideCompletionItems({ textDocument, position, context }, token) { | ||
return provider.provideCompletionItems(textDocument, position, token, context || { | ||
triggerKind: services_1.CompletionTriggerKind.Invoked | ||
}); | ||
}, | ||
resolveCompletionItem: resolveCompletionItem ? (item, token) => { | ||
return resolveCompletionItem(item, token); | ||
} : undefined | ||
}, ...triggerCharacters); | ||
}, | ||
registerCodeActionsProvider: function (selector, provider) { | ||
registerCodeActionsProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerCodeActionsProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerCodeActionsProvider(selector, { | ||
provideCodeActions: function (_a, token) { | ||
var textDocument = _a.textDocument, range = _a.range, context = _a.context; | ||
provideCodeActions({ textDocument, range, context }, token) { | ||
return provider.provideCodeActions(textDocument, range, context, token); | ||
@@ -320,17 +284,16 @@ } | ||
}, | ||
registerCodeLensProvider: function (selector, provider) { | ||
registerCodeLensProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerCodeLensProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
var resolveCodeLens = provider.resolveCodeLens; | ||
const resolveCodeLens = provider.resolveCodeLens; | ||
return languages.registerCodeLensProvider(selector, { | ||
provideCodeLenses: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideCodeLenses({ textDocument }, token) { | ||
return provider.provideCodeLenses(textDocument, token); | ||
}, | ||
resolveCodeLens: resolveCodeLens ? function (codeLens, token) { | ||
resolveCodeLens: resolveCodeLens ? (codeLens, token) => { | ||
return resolveCodeLens(codeLens, token); | ||
@@ -340,13 +303,12 @@ } : undefined | ||
}, | ||
registerDefinitionProvider: function (selector, provider) { | ||
registerDefinitionProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDefinitionProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDefinitionProvider(selector, { | ||
provideDefinition: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideDefinition({ textDocument, position }, token) { | ||
return provider.provideDefinition(textDocument, position, token); | ||
@@ -356,13 +318,12 @@ } | ||
}, | ||
registerImplementationProvider: function (selector, provider) { | ||
registerImplementationProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerImplementationProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerImplementationProvider(selector, { | ||
provideImplementation: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideImplementation({ textDocument, position }, token) { | ||
return provider.provideImplementation(textDocument, position, token); | ||
@@ -372,13 +333,12 @@ } | ||
}, | ||
registerTypeDefinitionProvider: function (selector, provider) { | ||
registerTypeDefinitionProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerTypeDefinitionProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerTypeDefinitionProvider(selector, { | ||
provideTypeDefinition: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideTypeDefinition({ textDocument, position }, token) { | ||
return provider.provideTypeDefinition(textDocument, position, token); | ||
@@ -388,11 +348,24 @@ } | ||
}, | ||
registerHoverProvider: function (selector, provider) { | ||
registerDeclarationProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDeclarationProvider) { | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDeclarationProvider(selector, { | ||
provideDeclaration({ textDocument, position }, token) { | ||
return provider.provideDeclaration(textDocument, position, token); | ||
} | ||
}); | ||
}, | ||
registerHoverProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
const { languages } = servicesProvider(); | ||
if (languages.registerHoverProvider) { | ||
return languages.registerHoverProvider(selector, { | ||
provideHover: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideHover({ textDocument, position }, token) { | ||
return provider.provideHover(textDocument, position, token); | ||
@@ -402,15 +375,14 @@ } | ||
} | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
}, | ||
registerDocumentHighlightProvider: function (selector, provider) { | ||
registerDocumentHighlightProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentHighlightProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentHighlightProvider(selector, { | ||
provideDocumentHighlights: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideDocumentHighlights({ textDocument, position }, token) { | ||
return provider.provideDocumentHighlights(textDocument, position, token); | ||
@@ -420,13 +392,12 @@ } | ||
}, | ||
registerDocumentSymbolProvider: function (selector, provider) { | ||
registerDocumentSymbolProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentSymbolProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentSymbolProvider(selector, { | ||
provideDocumentSymbols: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideDocumentSymbols({ textDocument }, token) { | ||
return provider.provideDocumentSymbols(textDocument, token); | ||
@@ -436,10 +407,9 @@ } | ||
}, | ||
registerWorkspaceSymbolProvider: function (provider) { | ||
var languages = servicesProvider().languages; | ||
registerWorkspaceSymbolProvider(provider) { | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerWorkspaceSymbolProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerWorkspaceSymbolProvider({ | ||
provideWorkspaceSymbols: function (_a, token) { | ||
var query = _a.query; | ||
provideWorkspaceSymbols({ query }, token) { | ||
return provider.provideWorkspaceSymbols(query, token); | ||
@@ -449,13 +419,12 @@ } | ||
}, | ||
registerReferenceProvider: function (selector, provider) { | ||
registerReferenceProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerReferenceProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerReferenceProvider(selector, { | ||
provideReferences: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, context = _a.context; | ||
provideReferences({ textDocument, position, context }, token) { | ||
return provider.provideReferences(textDocument, position, context, token); | ||
@@ -465,13 +434,12 @@ } | ||
}, | ||
registerRenameProvider: function (selector, provider) { | ||
registerRenameProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerRenameProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerRenameProvider(selector, { | ||
provideRenameEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, newName = _a.newName; | ||
provideRenameEdits({ textDocument, position, newName }, token) { | ||
return provider.provideRenameEdits(textDocument, position, newName, token); | ||
@@ -481,13 +449,12 @@ } | ||
}, | ||
registerDocumentFormattingEditProvider: function (selector, provider) { | ||
registerDocumentFormattingEditProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentFormattingEditProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentFormattingEditProvider(selector, { | ||
provideDocumentFormattingEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, options = _a.options; | ||
provideDocumentFormattingEdits({ textDocument, options }, token) { | ||
return provider.provideDocumentFormattingEdits(textDocument, options, token); | ||
@@ -497,13 +464,12 @@ } | ||
}, | ||
registerDocumentRangeFormattingEditProvider: function (selector, provider) { | ||
registerDocumentRangeFormattingEditProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentRangeFormattingEditProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentRangeFormattingEditProvider(selector, { | ||
provideDocumentRangeFormattingEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, range = _a.range, options = _a.options; | ||
provideDocumentRangeFormattingEdits({ textDocument, range, options }, token) { | ||
return provider.provideDocumentRangeFormattingEdits(textDocument, range, options, token); | ||
@@ -513,55 +479,55 @@ } | ||
}, | ||
registerOnTypeFormattingEditProvider: function (selector, provider, firstTriggerCharacter) { | ||
var moreTriggerCharacter = []; | ||
for (var _i = 3; _i < arguments.length; _i++) { | ||
moreTriggerCharacter[_i - 3] = arguments[_i]; | ||
} | ||
registerOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerOnTypeFormattingEditProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerOnTypeFormattingEditProvider.apply(languages, [selector, { | ||
provideOnTypeFormattingEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, ch = _a.ch, options = _a.options; | ||
return provider.provideOnTypeFormattingEdits(textDocument, position, ch, options, token); | ||
} | ||
}, firstTriggerCharacter].concat(moreTriggerCharacter)); | ||
return languages.registerOnTypeFormattingEditProvider(selector, { | ||
provideOnTypeFormattingEdits({ textDocument, position, ch, options }, token) { | ||
return provider.provideOnTypeFormattingEdits(textDocument, position, ch, options, token); | ||
} | ||
}, firstTriggerCharacter, ...moreTriggerCharacter); | ||
}, | ||
registerSignatureHelpProvider: function (selector, provider) { | ||
var triggerCharacter = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacter[_i - 2] = arguments[_i]; | ||
} | ||
registerSignatureHelpProvider(selector, provider, firstItem, ...remaining) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerSignatureHelpProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerSignatureHelpProvider.apply(languages, [selector, { | ||
provideSignatureHelp: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
return provider.provideSignatureHelp(textDocument, position, token); | ||
} | ||
}].concat(triggerCharacter)); | ||
let triggerCharacters; | ||
let retriggerCharacters; | ||
if (typeof firstItem === 'string') { | ||
triggerCharacters = [firstItem, ...remaining]; | ||
} | ||
else if (firstItem) { | ||
triggerCharacters = firstItem.triggerCharacters; | ||
retriggerCharacters = firstItem.retriggerCharacters; | ||
} | ||
return languages.registerSignatureHelpProvider(selector, { | ||
triggerCharacters, | ||
retriggerCharacters, | ||
provideSignatureHelp({ textDocument, position }, token, context) { | ||
return provider.provideSignatureHelp(textDocument, position, token, context); | ||
} | ||
}); | ||
}, | ||
registerDocumentLinkProvider: function (selector, provider) { | ||
registerDocumentLinkProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentLinkProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
var resolveDocumentLink = provider.resolveDocumentLink; | ||
const resolveDocumentLink = provider.resolveDocumentLink; | ||
return languages.registerDocumentLinkProvider(selector, { | ||
provideDocumentLinks: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideDocumentLinks({ textDocument }, token) { | ||
return provider.provideDocumentLinks(textDocument, token); | ||
}, | ||
resolveDocumentLink: resolveDocumentLink ? function (link, token) { | ||
resolveDocumentLink: resolveDocumentLink ? (link, token) => { | ||
return resolveDocumentLink(link, token); | ||
@@ -571,17 +537,15 @@ } : undefined | ||
}, | ||
registerColorProvider: function (selector, provider) { | ||
registerColorProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerColorProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerColorProvider(selector, { | ||
provideDocumentColors: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideDocumentColors({ textDocument }, token) { | ||
return provider.provideDocumentColors(textDocument, token); | ||
}, | ||
provideColorPresentations: function (_a, token) { | ||
var textDocument = _a.textDocument, color = _a.color, range = _a.range; | ||
provideColorPresentations({ textDocument, color, range }, token) { | ||
return provider.provideColorPresentations(color, { | ||
@@ -594,13 +558,12 @@ document: textDocument, | ||
}, | ||
registerFoldingRangeProvider: function (selector, provider) { | ||
registerFoldingRangeProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerFoldingRangeProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerFoldingRangeProvider(selector, { | ||
provideFoldingRanges: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideFoldingRanges({ textDocument }, token) { | ||
return provider.provideFoldingRanges(textDocument, {}, token); | ||
@@ -610,3 +573,18 @@ } | ||
}, | ||
registerSelectionRangeProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerSelectionRangeProvider) { | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerSelectionRangeProvider(selector, { | ||
provideSelectionRanges({ textDocument, positions }, token) { | ||
return provider.provideSelectionRanges(textDocument, positions, token); | ||
} | ||
}); | ||
}, | ||
getLanguages: unsupported, | ||
setTextDocumentLanguage: unsupported, | ||
getDiagnostics: unsupported, | ||
@@ -620,31 +598,43 @@ setLanguageConfiguration: unsupported, | ||
} | ||
var message = arg0; | ||
const message = arg0; | ||
if (arg1 !== undefined && !Array.isArray(arg1)) { | ||
throw new Error('unexpected actions: ' + JSON.stringify(arg1)); | ||
} | ||
var actions = arg1 || []; | ||
var window = servicesProvider().window; | ||
const actions = arg1 || []; | ||
const { window } = servicesProvider(); | ||
if (!window) { | ||
return Promise.resolve(undefined); | ||
} | ||
return window.showMessage.apply(window, [type, message].concat(actions)); | ||
return window.showMessage(type, message, ...actions); | ||
} | ||
var window = { | ||
const window = { | ||
showInformationMessage: showMessage.bind(undefined, services_1.MessageType.Info), | ||
showWarningMessage: showMessage.bind(undefined, services_1.MessageType.Warning), | ||
showErrorMessage: showMessage.bind(undefined, services_1.MessageType.Error), | ||
createOutputChannel: function (name) { | ||
var window = servicesProvider().window; | ||
var createOutputChannel = window ? window.createOutputChannel : undefined; | ||
var channel = createOutputChannel ? createOutputChannel.bind(window)(name) : undefined; | ||
createOutputChannel(name) { | ||
const { window } = servicesProvider(); | ||
const createOutputChannel = window ? window.createOutputChannel : undefined; | ||
const channel = createOutputChannel ? createOutputChannel.bind(window)(name) : undefined; | ||
return { | ||
name: name, | ||
append: channel.append.bind(channel), | ||
appendLine: channel.appendLine.bind(channel), | ||
name, | ||
append: channel ? channel.append.bind(channel) : () => { }, | ||
appendLine: channel ? channel.appendLine.bind(channel) : () => { }, | ||
clear: unsupported, | ||
show: channel.show.bind(channel), | ||
show: (arg) => { | ||
if (arg !== undefined && typeof arg !== 'boolean') { | ||
throw new Error('unexpected preserveFocus argument: ' + JSON.stringify(arg, undefined, 4)); | ||
} | ||
return channel ? channel.show(arg) : () => { }; | ||
}, | ||
hide: unsupported, | ||
dispose: channel.dispose.bind(channel) | ||
dispose: channel ? channel.dispose.bind(channel) : () => { } | ||
}; | ||
}, | ||
withProgress: (options, task) => { | ||
const { window } = servicesProvider(); | ||
if (window && window.withProgress) { | ||
return window.withProgress(options, task); | ||
} | ||
return task({ report: () => { } }, new vscode.CancellationTokenSource().token); | ||
}, | ||
showTextDocument: unsupported, | ||
@@ -660,3 +650,2 @@ createTextEditorDecorationType: unsupported, | ||
withScmProgress: unsupported, | ||
withProgress: unsupported, | ||
createStatusBarItem: unsupported, | ||
@@ -679,2 +668,10 @@ createTerminal: unsupported, | ||
onDidChangeTextEditorViewColumn: unsupported, | ||
get terminals() { | ||
return unsupported(); | ||
}, | ||
get activeTerminal() { | ||
return unsupported(); | ||
}, | ||
onDidChangeActiveTerminal: unsupported, | ||
onDidOpenTerminal: unsupported, | ||
onDidCloseTerminal: unsupported, | ||
@@ -684,9 +681,12 @@ get state() { | ||
}, | ||
onDidChangeWindowState: unsupported | ||
onDidChangeWindowState: unsupported, | ||
createQuickPick: unsupported, | ||
createInputBox: unsupported, | ||
registerUriHandler: unsupported | ||
}; | ||
var commands = { | ||
registerCommand: function (command, callback, thisArg) { | ||
var commands = servicesProvider().commands; | ||
const commands = { | ||
registerCommand(command, callback, thisArg) { | ||
const { commands } = servicesProvider(); | ||
if (!commands) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
@@ -699,21 +699,20 @@ return commands.registerCommand(command, callback, thisArg); | ||
}; | ||
var CodeDisposable = /** @class */ (function () { | ||
function CodeDisposable(callOnDispose) { | ||
class CodeDisposable { | ||
constructor(callOnDispose) { | ||
this.callOnDispose = callOnDispose; | ||
} | ||
CodeDisposable.prototype.dispose = function () { | ||
dispose() { | ||
this.callOnDispose(); | ||
}; | ||
return CodeDisposable; | ||
}()); | ||
} | ||
} | ||
return { | ||
workspace: workspace, | ||
languages: languages, | ||
window: window, | ||
commands: commands, | ||
Uri: Uri, | ||
CompletionItem: CompletionItem, | ||
CodeLens: CodeLens, | ||
DocumentLink: DocumentLink, | ||
CodeActionKind: CodeActionKind, | ||
workspace, | ||
languages, | ||
window, | ||
commands, | ||
Uri, | ||
CompletionItem, | ||
CodeLens, | ||
DocumentLink, | ||
CodeActionKind, | ||
Disposable: CodeDisposable | ||
@@ -720,0 +719,0 @@ }; |
@@ -1,4 +0,3 @@ | ||
/// <reference path="../../node_modules/vscode/vscode.d.ts" /> | ||
declare const _default: typeof import("vscode"); | ||
export = _default; | ||
//# sourceMappingURL=vscode-compatibility.d.ts.map |
@@ -7,37 +7,28 @@ /* -------------------------------------------------------------------------------------------- | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var main_1 = require("vscode-languageserver-protocol/lib/main"); | ||
var Is = require("vscode-languageserver-protocol/lib/utils/is"); | ||
const main_1 = require("vscode-languageserver-protocol/lib/main"); | ||
const Is = require("vscode-languageserver-protocol/lib/utils/is"); | ||
function createConnection(connection, errorHandler, closeHandler) { | ||
connection.onError(function (data) { errorHandler(data[0], data[1], data[2]); }); | ||
connection.onError((data) => { errorHandler(data[0], data[1], data[2]); }); | ||
connection.onClose(closeHandler); | ||
return { | ||
listen: function () { return connection.listen(); }, | ||
sendRequest: function (type) { | ||
var params = []; | ||
for (var _i = 1; _i < arguments.length; _i++) { | ||
params[_i - 1] = arguments[_i]; | ||
} | ||
return connection.sendRequest.apply(connection, [Is.string(type) ? type : type.method].concat(params)); | ||
}, | ||
onRequest: function (type, handler) { return connection.onRequest(Is.string(type) ? type : type.method, handler); }, | ||
sendNotification: function (type, params) { return connection.sendNotification(Is.string(type) ? type : type.method, params); }, | ||
onNotification: function (type, handler) { return connection.onNotification(Is.string(type) ? type : type.method, handler); }, | ||
trace: function (value, tracer, sendNotification) { | ||
if (sendNotification === void 0) { sendNotification = false; } | ||
return connection.trace(value, tracer, sendNotification); | ||
}, | ||
initialize: function (params) { return connection.sendRequest(main_1.InitializeRequest.type, params); }, | ||
shutdown: function () { return connection.sendRequest(main_1.ShutdownRequest.type, undefined); }, | ||
exit: function () { return connection.sendNotification(main_1.ExitNotification.type); }, | ||
onLogMessage: function (handler) { return connection.onNotification(main_1.LogMessageNotification.type, handler); }, | ||
onShowMessage: function (handler) { return connection.onNotification(main_1.ShowMessageNotification.type, handler); }, | ||
onTelemetry: function (handler) { return connection.onNotification(main_1.TelemetryEventNotification.type, handler); }, | ||
didChangeConfiguration: function (params) { return connection.sendNotification(main_1.DidChangeConfigurationNotification.type, params); }, | ||
didChangeWatchedFiles: function (params) { return connection.sendNotification(main_1.DidChangeWatchedFilesNotification.type, params); }, | ||
didOpenTextDocument: function (params) { return connection.sendNotification(main_1.DidOpenTextDocumentNotification.type, params); }, | ||
didChangeTextDocument: function (params) { return connection.sendNotification(main_1.DidChangeTextDocumentNotification.type, params); }, | ||
didCloseTextDocument: function (params) { return connection.sendNotification(main_1.DidCloseTextDocumentNotification.type, params); }, | ||
didSaveTextDocument: function (params) { return connection.sendNotification(main_1.DidSaveTextDocumentNotification.type, params); }, | ||
onDiagnostics: function (handler) { return connection.onNotification(main_1.PublishDiagnosticsNotification.type, handler); }, | ||
dispose: function () { return connection.dispose(); } | ||
listen: () => connection.listen(), | ||
sendRequest: (type, ...params) => connection.sendRequest(Is.string(type) ? type : type.method, ...params), | ||
onRequest: (type, handler) => connection.onRequest(Is.string(type) ? type : type.method, handler), | ||
sendNotification: (type, params) => connection.sendNotification(Is.string(type) ? type : type.method, params), | ||
onNotification: (type, handler) => connection.onNotification(Is.string(type) ? type : type.method, handler), | ||
trace: (value, tracer, sendNotification = false) => connection.trace(value, tracer, sendNotification), | ||
initialize: (params) => connection.sendRequest(main_1.InitializeRequest.type, params), | ||
shutdown: () => connection.sendRequest(main_1.ShutdownRequest.type, undefined), | ||
exit: () => connection.sendNotification(main_1.ExitNotification.type), | ||
onLogMessage: (handler) => connection.onNotification(main_1.LogMessageNotification.type, handler), | ||
onShowMessage: (handler) => connection.onNotification(main_1.ShowMessageNotification.type, handler), | ||
onTelemetry: (handler) => connection.onNotification(main_1.TelemetryEventNotification.type, handler), | ||
didChangeConfiguration: (params) => connection.sendNotification(main_1.DidChangeConfigurationNotification.type, params), | ||
didChangeWatchedFiles: (params) => connection.sendNotification(main_1.DidChangeWatchedFilesNotification.type, params), | ||
didOpenTextDocument: (params) => connection.sendNotification(main_1.DidOpenTextDocumentNotification.type, params), | ||
didChangeTextDocument: (params) => connection.sendNotification(main_1.DidChangeTextDocumentNotification.type, params), | ||
didCloseTextDocument: (params) => connection.sendNotification(main_1.DidCloseTextDocumentNotification.type, params), | ||
didSaveTextDocument: (params) => connection.sendNotification(main_1.DidSaveTextDocumentNotification.type, params), | ||
onDiagnostics: (handler) => connection.onNotification(main_1.PublishDiagnosticsNotification.type, handler), | ||
dispose: () => connection.dispose() | ||
}; | ||
@@ -44,0 +35,0 @@ } |
@@ -7,12 +7,8 @@ "use strict"; | ||
* ------------------------------------------------------------------------------------------ */ | ||
var services_1 = require("./services"); | ||
var ConsoleWindow = /** @class */ (function () { | ||
function ConsoleWindow() { | ||
const services_1 = require("./services"); | ||
class ConsoleWindow { | ||
constructor() { | ||
this.channels = new Map(); | ||
} | ||
ConsoleWindow.prototype.showMessage = function (type, message) { | ||
var actions = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
actions[_i - 2] = arguments[_i]; | ||
} | ||
showMessage(type, message, ...actions) { | ||
if (type === services_1.MessageType.Error) { | ||
@@ -31,19 +27,19 @@ console.error(message); | ||
return Promise.resolve(undefined); | ||
}; | ||
ConsoleWindow.prototype.createOutputChannel = function (name) { | ||
var existing = this.channels.get(name); | ||
} | ||
createOutputChannel(name) { | ||
const existing = this.channels.get(name); | ||
if (existing) { | ||
return existing; | ||
} | ||
var channel = { | ||
append: function (value) { | ||
const channel = { | ||
append(value) { | ||
console.log(name + ': ' + value); | ||
}, | ||
appendLine: function (line) { | ||
appendLine(line) { | ||
console.log(name + ': ' + line); | ||
}, | ||
show: function () { | ||
show() { | ||
// no-op | ||
}, | ||
dispose: function () { | ||
dispose() { | ||
// no-op | ||
@@ -54,6 +50,5 @@ } | ||
return channel; | ||
}; | ||
return ConsoleWindow; | ||
}()); | ||
} | ||
} | ||
exports.ConsoleWindow = ConsoleWindow; | ||
//# sourceMappingURL=console-window.js.map |
@@ -7,19 +7,19 @@ "use strict"; | ||
* ------------------------------------------------------------------------------------------ */ | ||
var services_1 = require("./services"); | ||
const services_1 = require("./services"); | ||
exports.Disposable = services_1.Disposable; | ||
var DisposableCollection = /** @class */ (function () { | ||
function DisposableCollection() { | ||
class DisposableCollection { | ||
constructor() { | ||
this.disposables = []; | ||
} | ||
DisposableCollection.prototype.dispose = function () { | ||
dispose() { | ||
while (this.disposables.length !== 0) { | ||
this.disposables.pop().dispose(); | ||
} | ||
}; | ||
DisposableCollection.prototype.push = function (disposable) { | ||
var disposables = this.disposables; | ||
} | ||
push(disposable) { | ||
const disposables = this.disposables; | ||
disposables.push(disposable); | ||
return { | ||
dispose: function () { | ||
var index = disposables.indexOf(disposable); | ||
dispose() { | ||
const index = disposables.indexOf(disposable); | ||
if (index !== -1) { | ||
@@ -30,6 +30,5 @@ disposables.splice(index, 1); | ||
}; | ||
}; | ||
return DisposableCollection; | ||
}()); | ||
} | ||
} | ||
exports.DisposableCollection = DisposableCollection; | ||
//# sourceMappingURL=disposable.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var MonacoCommands = /** @class */ (function () { | ||
function MonacoCommands(editor) { | ||
class MonacoCommands { | ||
constructor(editor) { | ||
this.editor = editor; | ||
} | ||
MonacoCommands.prototype.registerCommand = function (command, callback, thisArg) { | ||
registerCommand(command, callback, thisArg) { | ||
return this.editor._commandService.addCommand({ | ||
id: command, | ||
handler: function (_accessor) { | ||
var args = []; | ||
for (var _i = 1; _i < arguments.length; _i++) { | ||
args[_i - 1] = arguments[_i]; | ||
} | ||
return callback.apply(void 0, args); | ||
} | ||
handler: (_accessor, ...args) => callback(...args) | ||
}); | ||
}; | ||
return MonacoCommands; | ||
}()); | ||
} | ||
} | ||
exports.MonacoCommands = MonacoCommands; | ||
//# sourceMappingURL=monaco-commands.js.map |
@@ -47,3 +47,3 @@ /// <reference types="monaco-editor-core/monaco" /> | ||
asCompletionContext(context: monaco.languages.CompletionContext): CompletionContext; | ||
asTriggerKind(triggerKind: monaco.languages.SuggestTriggerKind): CompletionTriggerKind; | ||
asTriggerKind(triggerKind: monaco.languages.CompletionTriggerKind): CompletionTriggerKind; | ||
asCompletionItem(item: monaco.languages.CompletionItem): CompletionItem; | ||
@@ -85,5 +85,5 @@ protected asCompletionItemKind(value: monaco.languages.CompletionItemKind, original: CompletionItemKind | undefined): CompletionItemKind; | ||
asTextEdit(edit: TextEdit | undefined | null): undefined; | ||
asTextEdits(items: TextEdit[]): monaco.editor.ISingleEditOperation[]; | ||
asTextEdits(items: TextEdit[]): monaco.languages.TextEdit[]; | ||
asTextEdits(items: undefined | null): undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.editor.ISingleEditOperation[] | undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.languages.TextEdit[] | undefined; | ||
asCodeLens(item: CodeLens): monaco.languages.ICodeLensSymbol; | ||
@@ -95,4 +95,4 @@ asCodeLens(item: undefined | null): undefined; | ||
asCodeLenses(items: CodeLens[] | undefined | null): monaco.languages.ICodeLensSymbol[] | undefined; | ||
asCodeActions(actions: (Command | CodeAction)[]): monaco.languages.CodeAction[]; | ||
asCodeAction(item: Command | CodeAction): monaco.languages.CodeAction; | ||
asCodeActions(actions: (Command | CodeAction)[]): (monaco.languages.Command | monaco.languages.CodeAction)[]; | ||
asCodeAction(item: Command | CodeAction): monaco.languages.Command | monaco.languages.CodeAction; | ||
asCommand(command: Command): monaco.languages.Command; | ||
@@ -142,11 +142,12 @@ asCommand(command: undefined): undefined; | ||
asRelatedInformation(relatedInformation: DiagnosticRelatedInformation): monaco.editor.IRelatedInformation; | ||
asCompletionResult(result: CompletionItem[] | CompletionList | null | undefined): monaco.languages.CompletionList; | ||
asCompletionItem(item: CompletionItem): ProtocolCompletionItem; | ||
asCompletionResult(result: CompletionItem[] | CompletionList | null | undefined, defaultRange: monaco.IRange): monaco.languages.CompletionList; | ||
asCompletionItem(item: CompletionItem, defaultRange: monaco.IRange): ProtocolCompletionItem; | ||
asCompletionItemKind(value: CompletionItemKind): [monaco.languages.CompletionItemKind, CompletionItemKind | undefined]; | ||
asCompletionInsertText(item: CompletionItem): { | ||
text: string | monaco.languages.SnippetString; | ||
range?: monaco.Range; | ||
asCompletionInsertText(item: CompletionItem, defaultRange: monaco.IRange): { | ||
insertText: string; | ||
range: monaco.IRange; | ||
fromEdit: boolean; | ||
} | undefined; | ||
asDocumentLinks(documentLinks: DocumentLink[]): ProtocolDocumentLink[]; | ||
isSnippet: boolean; | ||
}; | ||
asDocumentLinks(documentLinks: DocumentLink[]): monaco.languages.ILinksList; | ||
asDocumentLink(documentLink: DocumentLink): ProtocolDocumentLink; | ||
@@ -153,0 +154,0 @@ asRange(range: null): null; |
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -18,4 +7,5 @@ /* -------------------------------------------------------------------------------------------- | ||
* ------------------------------------------------------------------------------------------ */ | ||
var Is = require("vscode-languageserver-protocol/lib/utils/is"); | ||
var services_1 = require("./services"); | ||
const ls = require("vscode-languageserver-protocol"); | ||
const Is = require("vscode-languageserver-protocol/lib/utils/is"); | ||
const services_1 = require("./services"); | ||
var ProtocolDocumentLink; | ||
@@ -42,13 +32,11 @@ (function (ProtocolDocumentLink) { | ||
})(ProtocolCompletionItem = exports.ProtocolCompletionItem || (exports.ProtocolCompletionItem = {})); | ||
var MonacoToProtocolConverter = /** @class */ (function () { | ||
function MonacoToProtocolConverter() { | ||
} | ||
MonacoToProtocolConverter.prototype.asPosition = function (lineNumber, column) { | ||
var line = lineNumber === undefined || lineNumber === null ? undefined : lineNumber - 1; | ||
var character = column === undefined || column === null ? undefined : column - 1; | ||
class MonacoToProtocolConverter { | ||
asPosition(lineNumber, column) { | ||
const line = lineNumber === undefined || lineNumber === null ? undefined : lineNumber - 1; | ||
const character = column === undefined || column === null ? undefined : column - 1; | ||
return { | ||
line: line, character: character | ||
line, character | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asRange = function (range) { | ||
} | ||
asRange(range) { | ||
if (range === undefined) { | ||
@@ -60,14 +48,14 @@ return undefined; | ||
} | ||
var start = this.asPosition(range.startLineNumber, range.startColumn); | ||
var end = this.asPosition(range.endLineNumber, range.endColumn); | ||
const start = this.asPosition(range.startLineNumber, range.startColumn); | ||
const end = this.asPosition(range.endLineNumber, range.endColumn); | ||
return { | ||
start: start, end: end | ||
start, end | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextDocumentIdentifier = function (model) { | ||
} | ||
asTextDocumentIdentifier(model) { | ||
return { | ||
uri: model.uri.toString() | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextDocumentPositionParams = function (model, position) { | ||
} | ||
asTextDocumentPositionParams(model, position) { | ||
return { | ||
@@ -77,9 +65,9 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionParams = function (model, position, context) { | ||
} | ||
asCompletionParams(model, position, context) { | ||
return Object.assign(this.asTextDocumentPositionParams(model, position), { | ||
context: this.asCompletionContext(context) | ||
}); | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionContext = function (context) { | ||
} | ||
asCompletionContext(context) { | ||
return { | ||
@@ -89,8 +77,8 @@ triggerKind: this.asTriggerKind(context.triggerKind), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTriggerKind = function (triggerKind) { | ||
} | ||
asTriggerKind(triggerKind) { | ||
switch (triggerKind) { | ||
case monaco.languages.SuggestTriggerKind.TriggerCharacter: | ||
case monaco.languages.CompletionTriggerKind.TriggerCharacter: | ||
return services_1.CompletionTriggerKind.TriggerCharacter; | ||
case monaco.languages.SuggestTriggerKind.TriggerForIncompleteCompletions: | ||
case monaco.languages.CompletionTriggerKind.TriggerForIncompleteCompletions: | ||
return services_1.CompletionTriggerKind.TriggerForIncompleteCompletions; | ||
@@ -100,6 +88,6 @@ default: | ||
} | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionItem = function (item) { | ||
var result = { label: item.label }; | ||
var protocolItem = ProtocolCompletionItem.is(item) ? item : undefined; | ||
} | ||
asCompletionItem(item) { | ||
const result = { label: item.label }; | ||
const protocolItem = ProtocolCompletionItem.is(item) ? item : undefined; | ||
if (item.detail) { | ||
@@ -150,4 +138,4 @@ result.detail = item.detail; | ||
return result; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCompletionItemKind = function (value, original) { | ||
} | ||
asCompletionItemKind(value, original) { | ||
if (original !== undefined) { | ||
@@ -157,4 +145,4 @@ return original; | ||
return value + 1; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentation = function (format, documentation) { | ||
} | ||
asDocumentation(format, documentation) { | ||
switch (format) { | ||
@@ -166,20 +154,15 @@ case services_1.MarkupKind.PlainText: | ||
default: | ||
return "Unsupported Markup content received. Kind is: " + format; | ||
return `Unsupported Markup content received. Kind is: ${format}`; | ||
} | ||
}; | ||
MonacoToProtocolConverter.prototype.fillPrimaryInsertText = function (target, source) { | ||
var format = services_1.InsertTextFormat.PlainText; | ||
var text; | ||
var range; | ||
if (source.textEdit) { | ||
text = source.textEdit.text; | ||
range = this.asRange(source.textEdit.range); | ||
} | ||
else if (typeof source.insertText === 'string') { | ||
} | ||
fillPrimaryInsertText(target, source) { | ||
let format = services_1.InsertTextFormat.PlainText; | ||
let text; | ||
let range; | ||
if (source.insertTextRules !== undefined && (source.insertTextRules & monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet) === 0) { | ||
format = services_1.InsertTextFormat.Snippet; | ||
text = source.insertText; | ||
} | ||
else if (source.insertText) { | ||
format = services_1.InsertTextFormat.Snippet; | ||
text = source.insertText.value; | ||
} | ||
target.insertTextFormat = format; | ||
text = source.insertText; | ||
if (source.range) { | ||
@@ -195,18 +178,17 @@ range = this.asRange(source.range); | ||
} | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextEdit = function (edit) { | ||
var range = this.asRange(edit.range); | ||
} | ||
asTextEdit(edit) { | ||
const range = this.asRange(edit.range); | ||
return { | ||
range: range, | ||
newText: edit.text | ||
range, | ||
newText: edit.text || '' | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asTextEdits = function (items) { | ||
var _this = this; | ||
} | ||
asTextEdits(items) { | ||
if (!items) { | ||
return undefined; | ||
} | ||
return items.map(function (item) { return _this.asTextEdit(item); }); | ||
}; | ||
MonacoToProtocolConverter.prototype.asReferenceParams = function (model, position, options) { | ||
return items.map(item => this.asTextEdit(item)); | ||
} | ||
asReferenceParams(model, position, options) { | ||
return { | ||
@@ -217,14 +199,14 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentSymbolParams = function (model) { | ||
} | ||
asDocumentSymbolParams(model) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeLensParams = function (model) { | ||
} | ||
asCodeLensParams(model) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDiagnosticSeverity = function (value) { | ||
} | ||
asDiagnosticSeverity(value) { | ||
switch (value) { | ||
@@ -241,23 +223,22 @@ case monaco.MarkerSeverity.Error: | ||
return undefined; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDiagnostic = function (marker) { | ||
var range = this.asRange(new monaco.Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn)); | ||
var severity = this.asDiagnosticSeverity(marker.severity); | ||
} | ||
asDiagnostic(marker) { | ||
const range = this.asRange(new monaco.Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn)); | ||
const severity = this.asDiagnosticSeverity(marker.severity); | ||
return services_1.Diagnostic.create(range, marker.message, severity, marker.code, marker.source); | ||
}; | ||
MonacoToProtocolConverter.prototype.asDiagnostics = function (markers) { | ||
var _this = this; | ||
} | ||
asDiagnostics(markers) { | ||
if (markers === void 0 || markers === null) { | ||
return markers; | ||
} | ||
return markers.map(function (marker) { return _this.asDiagnostic(marker); }); | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeActionContext = function (context) { | ||
return markers.map(marker => this.asDiagnostic(marker)); | ||
} | ||
asCodeActionContext(context) { | ||
if (context === void 0 || context === null) { | ||
return context; | ||
} | ||
var diagnostics = this.asDiagnostics(context.markers); | ||
const diagnostics = this.asDiagnostics(context.markers); | ||
return services_1.CodeActionContext.create(diagnostics, Is.string(context.only) ? [context.only] : undefined); | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeActionParams = function (model, range, context) { | ||
} | ||
asCodeActionParams(model, range, context) { | ||
return { | ||
@@ -268,12 +249,12 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCommand = function (item) { | ||
} | ||
asCommand(item) { | ||
if (item) { | ||
var args = item.arguments || []; | ||
return services_1.Command.create.apply(services_1.Command, [item.title, item.id].concat(args)); | ||
let args = item.arguments || []; | ||
return services_1.Command.create(item.title, item.id, ...args); | ||
} | ||
return undefined; | ||
}; | ||
MonacoToProtocolConverter.prototype.asCodeLens = function (item) { | ||
var result = services_1.CodeLens.create(this.asRange(item.range)); | ||
} | ||
asCodeLens(item) { | ||
let result = services_1.CodeLens.create(this.asRange(item.range)); | ||
if (item.command) { | ||
@@ -289,7 +270,7 @@ result.command = this.asCommand(item.command); | ||
return result; | ||
}; | ||
MonacoToProtocolConverter.prototype.asFormattingOptions = function (options) { | ||
} | ||
asFormattingOptions(options) { | ||
return { tabSize: options.tabSize, insertSpaces: options.insertSpaces }; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentFormattingParams = function (model, options) { | ||
} | ||
asDocumentFormattingParams(model, options) { | ||
return { | ||
@@ -299,4 +280,4 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentRangeFormattingParams = function (model, range, options) { | ||
} | ||
asDocumentRangeFormattingParams(model, range, options) { | ||
return { | ||
@@ -307,27 +288,27 @@ textDocument: this.asTextDocumentIdentifier(model), | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentOnTypeFormattingParams = function (model, position, ch, options) { | ||
} | ||
asDocumentOnTypeFormattingParams(model, position, ch, options) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model), | ||
position: this.asPosition(position.lineNumber, position.column), | ||
ch: ch, | ||
ch, | ||
options: this.asFormattingOptions(options) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asRenameParams = function (model, position, newName) { | ||
} | ||
asRenameParams(model, position, newName) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model), | ||
position: this.asPosition(position.lineNumber, position.column), | ||
newName: newName | ||
newName | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentLinkParams = function (model) { | ||
} | ||
asDocumentLinkParams(model) { | ||
return { | ||
textDocument: this.asTextDocumentIdentifier(model) | ||
}; | ||
}; | ||
MonacoToProtocolConverter.prototype.asDocumentLink = function (item) { | ||
var result = services_1.DocumentLink.create(this.asRange(item.range)); | ||
} | ||
asDocumentLink(item) { | ||
let result = services_1.DocumentLink.create(this.asRange(item.range)); | ||
if (item.url) { | ||
result.target = item.url; | ||
result.target = typeof item.url === 'string' ? item.url : item.url.toString(); | ||
} | ||
@@ -338,33 +319,52 @@ if (ProtocolDocumentLink.is(item) && item.data) { | ||
return result; | ||
}; | ||
return MonacoToProtocolConverter; | ||
}()); | ||
} | ||
} | ||
exports.MonacoToProtocolConverter = MonacoToProtocolConverter; | ||
var ProtocolToMonacoConverter = /** @class */ (function () { | ||
function ProtocolToMonacoConverter() { | ||
} | ||
ProtocolToMonacoConverter.prototype.asResourceEdits = function (resource, edits, modelVersionId) { | ||
class ProtocolToMonacoConverter { | ||
asResourceEdits(resource, edits, modelVersionId) { | ||
return { | ||
resource: resource, | ||
edits: this.asTextEdits(edits), | ||
modelVersionId: modelVersionId | ||
modelVersionId | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asWorkspaceEdit = function (item) { | ||
} | ||
asWorkspaceEdit(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var edits = []; | ||
const edits = []; | ||
if (item.documentChanges) { | ||
for (var _i = 0, _a = item.documentChanges; _i < _a.length; _i++) { | ||
var change = _a[_i]; | ||
var resource = monaco.Uri.parse(change.textDocument.uri); | ||
var version = typeof change.textDocument.version === 'number' ? change.textDocument.version : undefined; | ||
edits.push(this.asResourceEdits(resource, change.edits, version)); | ||
} | ||
item.documentChanges.forEach(change => { | ||
if (ls.CreateFile.is(change)) { | ||
edits.push({ | ||
newUri: monaco.Uri.parse(change.uri), | ||
options: change.options | ||
}); | ||
} | ||
else if (ls.RenameFile.is(change)) { | ||
edits.push({ | ||
oldUri: monaco.Uri.parse(change.oldUri), | ||
newUri: monaco.Uri.parse(change.newUri), | ||
options: change.options | ||
}); | ||
} | ||
else if (ls.DeleteFile.is(change)) { | ||
edits.push({ | ||
oldUri: monaco.Uri.parse(change.uri), | ||
options: change.options | ||
}); | ||
} | ||
else if (ls.TextDocumentEdit.is(change)) { | ||
const resource = monaco.Uri.parse(change.textDocument.uri); | ||
const version = typeof change.textDocument.version === 'number' ? change.textDocument.version : undefined; | ||
edits.push(this.asResourceEdits(resource, change.edits, version)); | ||
} | ||
else { | ||
console.error(`Unknown workspace edit change received:\n${JSON.stringify(change, undefined, 4)}`); | ||
} | ||
}); | ||
} | ||
else if (item.changes) { | ||
for (var _b = 0, _c = Object.keys(item.changes); _b < _c.length; _b++) { | ||
var key = _c[_b]; | ||
var resource = monaco.Uri.parse(key); | ||
for (const key of Object.keys(item.changes)) { | ||
const resource = monaco.Uri.parse(key); | ||
edits.push(this.asResourceEdits(resource, item.changes[key])); | ||
@@ -374,28 +374,27 @@ } | ||
return { | ||
edits: edits | ||
edits | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asTextEdit = function (edit) { | ||
} | ||
asTextEdit(edit) { | ||
if (!edit) { | ||
return undefined; | ||
} | ||
var range = this.asRange(edit.range); | ||
const range = this.asRange(edit.range); | ||
return { | ||
range: range, | ||
range, | ||
text: edit.newText | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asTextEdits = function (items) { | ||
var _this = this; | ||
} | ||
asTextEdits(items) { | ||
if (!items) { | ||
return undefined; | ||
} | ||
return items.map(function (item) { return _this.asTextEdit(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeLens = function (item) { | ||
return items.map(item => this.asTextEdit(item)); | ||
} | ||
asCodeLens(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var range = this.asRange(item.range); | ||
var result = { range: range }; | ||
const range = this.asRange(item.range); | ||
let result = { range }; | ||
if (item.command) { | ||
@@ -408,15 +407,13 @@ result.command = this.asCommand(item.command); | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeLenses = function (items) { | ||
var _this = this; | ||
} | ||
asCodeLenses(items) { | ||
if (!items) { | ||
return undefined; | ||
} | ||
return items.map(function (codeLens) { return _this.asCodeLens(codeLens); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeActions = function (actions) { | ||
var _this = this; | ||
return actions.map(function (action) { return _this.asCodeAction(action); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCodeAction = function (item) { | ||
return items.map((codeLens) => this.asCodeLens(codeLens)); | ||
} | ||
asCodeActions(actions) { | ||
return actions.map(action => this.asCodeAction(action)); | ||
} | ||
asCodeAction(item) { | ||
if (services_1.CodeAction.is(item)) { | ||
@@ -439,4 +436,4 @@ return { | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCommand = function (command) { | ||
} | ||
asCommand(command) { | ||
if (!command) { | ||
@@ -450,6 +447,5 @@ return undefined; | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentSymbol = function (value) { | ||
var _this = this; | ||
var children = value.children && value.children.map(function (c) { return _this.asDocumentSymbol(c); }); | ||
} | ||
asDocumentSymbol(value) { | ||
const children = value.children && value.children.map(c => this.asDocumentSymbol(c)); | ||
return { | ||
@@ -461,21 +457,19 @@ name: value.name, | ||
selectionRange: this.asRange(value.selectionRange), | ||
children: children | ||
children | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentSymbols = function (values) { | ||
var _this = this; | ||
} | ||
asDocumentSymbols(values) { | ||
if (services_1.DocumentSymbol.is(values[0])) { | ||
return values.map(function (s) { return _this.asDocumentSymbol(s); }); | ||
return values.map(s => this.asDocumentSymbol(s)); | ||
} | ||
return this.asSymbolInformations(values); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSymbolInformations = function (values, uri) { | ||
var _this = this; | ||
} | ||
asSymbolInformations(values, uri) { | ||
if (!values) { | ||
return undefined; | ||
} | ||
return values.map(function (information) { return _this.asSymbolInformation(information, uri); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSymbolInformation = function (item, uri) { | ||
var location = this.asLocation(uri ? __assign({}, item.location, { uri: uri.toString() }) : item.location); | ||
return values.map(information => this.asSymbolInformation(information, uri)); | ||
} | ||
asSymbolInformation(item, uri) { | ||
const location = this.asLocation(uri ? Object.assign({}, item.location, { uri: uri.toString() }) : item.location); | ||
return { | ||
@@ -489,4 +483,4 @@ name: item.name, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSymbolKind = function (item) { | ||
} | ||
asSymbolKind(item) { | ||
if (item <= services_1.SymbolKind.TypeParameter) { | ||
@@ -497,16 +491,15 @@ // Symbol kind is one based in the protocol and zero based in code. | ||
return monaco.languages.SymbolKind.Property; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentHighlights = function (values) { | ||
var _this = this; | ||
} | ||
asDocumentHighlights(values) { | ||
if (!values) { | ||
return undefined; | ||
} | ||
return values.map(function (item) { return _this.asDocumentHighlight(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentHighlight = function (item) { | ||
var range = this.asRange(item.range); | ||
var kind = Is.number(item.kind) ? this.asDocumentHighlightKind(item.kind) : undefined; | ||
return { range: range, kind: kind }; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentHighlightKind = function (item) { | ||
return values.map(item => this.asDocumentHighlight(item)); | ||
} | ||
asDocumentHighlight(item) { | ||
const range = this.asRange(item.range); | ||
const kind = Is.number(item.kind) ? this.asDocumentHighlightKind(item.kind) : undefined; | ||
return { range, kind }; | ||
} | ||
asDocumentHighlightKind(item) { | ||
switch (item) { | ||
@@ -521,12 +514,10 @@ case services_1.DocumentHighlightKind.Text: | ||
return monaco.languages.DocumentHighlightKind.Text; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asReferences = function (values) { | ||
var _this = this; | ||
} | ||
asReferences(values) { | ||
if (!values) { | ||
return undefined; | ||
} | ||
return values.map(function (location) { return _this.asLocation(location); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDefinitionResult = function (item) { | ||
var _this = this; | ||
return values.map(location => this.asLocation(location)); | ||
} | ||
asDefinitionResult(item) { | ||
if (!item) { | ||
@@ -536,3 +527,3 @@ return undefined; | ||
if (Is.array(item)) { | ||
return item.map(function (location) { return _this.asLocation(location); }); | ||
return item.map((location) => this.asLocation(location)); | ||
} | ||
@@ -542,18 +533,18 @@ else { | ||
} | ||
}; | ||
ProtocolToMonacoConverter.prototype.asLocation = function (item) { | ||
} | ||
asLocation(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var uri = monaco.Uri.parse(item.uri); | ||
var range = this.asRange(item.range); | ||
const uri = monaco.Uri.parse(item.uri); | ||
const range = this.asRange(item.range); | ||
return { | ||
uri: uri, range: range | ||
uri, range | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSignatureHelp = function (item) { | ||
} | ||
asSignatureHelp(item) { | ||
if (!item) { | ||
return undefined; | ||
} | ||
var result = {}; | ||
let result = {}; | ||
if (Is.number(item.activeSignature)) { | ||
@@ -580,9 +571,8 @@ result.activeSignature = item.activeSignature; | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSignatureInformations = function (items) { | ||
var _this = this; | ||
return items.map(function (item) { return _this.asSignatureInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSignatureInformation = function (item) { | ||
var result = { label: item.label }; | ||
} | ||
asSignatureInformations(items) { | ||
return items.map(item => this.asSignatureInformation(item)); | ||
} | ||
asSignatureInformation(item) { | ||
let result = { label: item.label }; | ||
if (item.documentation) { | ||
@@ -598,9 +588,8 @@ result.documentation = this.asDocumentation(item.documentation); | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asParameterInformations = function (item) { | ||
var _this = this; | ||
return item.map(function (item) { return _this.asParameterInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asParameterInformation = function (item) { | ||
var result = { label: item.label }; | ||
} | ||
asParameterInformations(item) { | ||
return item.map(item => this.asParameterInformation(item)); | ||
} | ||
asParameterInformation(item) { | ||
let result = { label: item.label }; | ||
if (item.documentation) { | ||
@@ -611,4 +600,4 @@ result.documentation = this.asDocumentation(item.documentation); | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asHover = function (hover) { | ||
} | ||
asHover(hover) { | ||
if (!hover) { | ||
@@ -621,11 +610,10 @@ return undefined; | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asHoverContent = function (contents) { | ||
var _this = this; | ||
} | ||
asHoverContent(contents) { | ||
if (Array.isArray(contents)) { | ||
return contents.map(function (content) { return _this.asMarkdownString(content); }); | ||
return contents.map(content => this.asMarkdownString(content)); | ||
} | ||
return [this.asMarkdownString(contents)]; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentation = function (value) { | ||
} | ||
asDocumentation(value) { | ||
if (Is.string(value)) { | ||
@@ -638,4 +626,4 @@ return value; | ||
return this.asMarkdownString(value); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asMarkdownString = function (content) { | ||
} | ||
asMarkdownString(content) { | ||
if (services_1.MarkupContent.is(content)) { | ||
@@ -649,8 +637,8 @@ return { | ||
} | ||
var language = content.language, value = content.value; | ||
const { language, value } = content; | ||
return { | ||
value: '```' + language + '\n' + value + '\n```' | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asSeverity = function (severity) { | ||
} | ||
asSeverity(severity) { | ||
if (severity === 1) { | ||
@@ -666,11 +654,10 @@ return monaco.MarkerSeverity.Error; | ||
return monaco.MarkerSeverity.Hint; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDiagnostics = function (diagnostics) { | ||
var _this = this; | ||
} | ||
asDiagnostics(diagnostics) { | ||
if (!diagnostics) { | ||
return undefined; | ||
} | ||
return diagnostics.map(function (diagnostic) { return _this.asDiagnostic(diagnostic); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDiagnostic = function (diagnostic) { | ||
return diagnostics.map(diagnostic => this.asDiagnostic(diagnostic)); | ||
} | ||
asDiagnostic(diagnostic) { | ||
return { | ||
@@ -687,11 +674,10 @@ code: typeof diagnostic.code === "number" ? diagnostic.code.toString() : diagnostic.code, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asRelatedInformations = function (relatedInformation) { | ||
var _this = this; | ||
} | ||
asRelatedInformations(relatedInformation) { | ||
if (!relatedInformation) { | ||
return undefined; | ||
} | ||
return relatedInformation.map(function (item) { return _this.asRelatedInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asRelatedInformation = function (relatedInformation) { | ||
return relatedInformation.map(item => this.asRelatedInformation(item)); | ||
} | ||
asRelatedInformation(relatedInformation) { | ||
return { | ||
@@ -705,25 +691,24 @@ resource: monaco.Uri.parse(relatedInformation.location.uri), | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionResult = function (result) { | ||
var _this = this; | ||
} | ||
asCompletionResult(result, defaultRange) { | ||
if (!result) { | ||
return { | ||
isIncomplete: false, | ||
items: [] | ||
incomplete: false, | ||
suggestions: [] | ||
}; | ||
} | ||
if (Array.isArray(result)) { | ||
var items = result.map(function (item) { return _this.asCompletionItem(item); }); | ||
const suggestions = result.map(item => this.asCompletionItem(item, defaultRange)); | ||
return { | ||
isIncomplete: false, | ||
items: items | ||
incomplete: false, | ||
suggestions | ||
}; | ||
} | ||
return { | ||
isIncomplete: result.isIncomplete, | ||
items: result.items.map(this.asCompletionItem.bind(this)) | ||
incomplete: result.isIncomplete, | ||
suggestions: result.items.map(item => this.asCompletionItem(item, defaultRange)) | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionItem = function (item) { | ||
var result = { label: item.label }; | ||
} | ||
asCompletionItem(item, defaultRange) { | ||
const result = { label: item.label }; | ||
if (item.detail) { | ||
@@ -740,10 +725,11 @@ result.detail = item.detail; | ||
} | ||
var insertText = this.asCompletionInsertText(item); | ||
if (insertText) { | ||
result.insertText = insertText.text; | ||
result.range = insertText.range; | ||
result.fromEdit = insertText.fromEdit; | ||
const insertText = this.asCompletionInsertText(item, defaultRange); | ||
result.insertText = insertText.insertText; | ||
result.range = insertText.range; | ||
result.fromEdit = insertText.fromEdit; | ||
if (insertText.isSnippet) { | ||
result.insertTextRules = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet; | ||
} | ||
if (Is.number(item.kind)) { | ||
var _a = this.asCompletionItemKind(item.kind), itemKind = _a[0], original = _a[1]; | ||
let [itemKind, original] = this.asCompletionItemKind(item.kind); | ||
result.kind = itemKind; | ||
@@ -769,9 +755,14 @@ if (original) { | ||
} | ||
// TODO if (item.preselect === true || item.preselect === false) { result.preselect = item.preselect; } | ||
if (item.preselect === true || item.preselect === false) { | ||
result.preselect = item.preselect; | ||
} | ||
if (item.data !== undefined) { | ||
result.data = item.data; | ||
} | ||
if (item.deprecated === true || item.deprecated === false) { | ||
result.deprecated = item.deprecated; | ||
} | ||
return result; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionItemKind = function (value) { | ||
} | ||
asCompletionItemKind(value) { | ||
// Protocol item kind is 1 based, codes item kind is zero based. | ||
@@ -783,24 +774,20 @@ if (services_1.CompletionItemKind.Text <= value && value <= services_1.CompletionItemKind.TypeParameter) { | ||
return [services_1.CompletionItemKind.Text, value]; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asCompletionInsertText = function (item) { | ||
} | ||
asCompletionInsertText(item, defaultRange) { | ||
const isSnippet = item.insertTextFormat === services_1.InsertTextFormat.Snippet; | ||
if (item.textEdit) { | ||
var range = this.asRange(item.textEdit.range); | ||
var value = item.textEdit.newText; | ||
var text = item.insertTextFormat === services_1.InsertTextFormat.Snippet ? { value: value } : value; | ||
return { | ||
text: text, range: range, fromEdit: true | ||
}; | ||
const range = this.asRange(item.textEdit.range); | ||
const value = item.textEdit.newText; | ||
return { isSnippet, insertText: value, range, fromEdit: true, }; | ||
} | ||
if (item.insertText) { | ||
var value = item.insertText; | ||
var text = item.insertTextFormat === services_1.InsertTextFormat.Snippet ? { value: value } : value; | ||
return { text: text, fromEdit: false }; | ||
return { isSnippet, insertText: item.insertText, fromEdit: false, range: defaultRange }; | ||
} | ||
return undefined; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentLinks = function (documentLinks) { | ||
var _this = this; | ||
return documentLinks.map(function (link) { return _this.asDocumentLink(link); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asDocumentLink = function (documentLink) { | ||
return { insertText: item.label, range: defaultRange, fromEdit: false, isSnippet: false }; | ||
} | ||
asDocumentLinks(documentLinks) { | ||
const links = documentLinks.map(link => this.asDocumentLink(link)); | ||
return { links }; | ||
} | ||
asDocumentLink(documentLink) { | ||
return { | ||
@@ -811,4 +798,4 @@ range: this.asRange(documentLink.range), | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asRange = function (range) { | ||
} | ||
asRange(range) { | ||
if (range === undefined) { | ||
@@ -820,14 +807,14 @@ return undefined; | ||
} | ||
var start = this.asPosition(range.start); | ||
var end = this.asPosition(range.end); | ||
const start = this.asPosition(range.start); | ||
const end = this.asPosition(range.end); | ||
if (start instanceof monaco.Position && end instanceof monaco.Position) { | ||
return new monaco.Range(start.lineNumber, start.column, end.lineNumber, end.column); | ||
} | ||
var startLineNumber = !start || start.lineNumber === undefined ? undefined : start.lineNumber; | ||
var startColumn = !start || start.column === undefined ? undefined : start.column; | ||
var endLineNumber = !end || end.lineNumber === undefined ? undefined : end.lineNumber; | ||
var endColumn = !end || end.column === undefined ? undefined : end.column; | ||
return { startLineNumber: startLineNumber, startColumn: startColumn, endLineNumber: endLineNumber, endColumn: endColumn }; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asPosition = function (position) { | ||
const startLineNumber = !start || start.lineNumber === undefined ? undefined : start.lineNumber; | ||
const startColumn = !start || start.column === undefined ? undefined : start.column; | ||
const endLineNumber = !end || end.lineNumber === undefined ? undefined : end.lineNumber; | ||
const endColumn = !end || end.column === undefined ? undefined : end.column; | ||
return { startLineNumber, startColumn, endLineNumber, endColumn }; | ||
} | ||
asPosition(position) { | ||
if (position === undefined) { | ||
@@ -839,15 +826,14 @@ return undefined; | ||
} | ||
var line = position.line, character = position.character; | ||
var lineNumber = line === undefined ? undefined : line + 1; | ||
var column = character === undefined ? undefined : character + 1; | ||
const { line, character } = position; | ||
const lineNumber = line === undefined ? undefined : line + 1; | ||
const column = character === undefined ? undefined : character + 1; | ||
if (lineNumber !== undefined && column !== undefined) { | ||
return new monaco.Position(lineNumber, column); | ||
} | ||
return { lineNumber: lineNumber, column: column }; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorInformations = function (items) { | ||
var _this = this; | ||
return items.map(function (item) { return _this.asColorInformation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorInformation = function (item) { | ||
return { lineNumber, column }; | ||
} | ||
asColorInformations(items) { | ||
return items.map(item => this.asColorInformation(item)); | ||
} | ||
asColorInformation(item) { | ||
return { | ||
@@ -857,8 +843,7 @@ range: this.asRange(item.range), | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorPresentations = function (items) { | ||
var _this = this; | ||
return items.map(function (item) { return _this.asColorPresentation(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asColorPresentation = function (item) { | ||
} | ||
asColorPresentations(items) { | ||
return items.map(item => this.asColorPresentation(item)); | ||
} | ||
asColorPresentation(item) { | ||
return { | ||
@@ -869,11 +854,10 @@ label: item.label, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asFoldingRanges = function (items) { | ||
var _this = this; | ||
} | ||
asFoldingRanges(items) { | ||
if (!items) { | ||
return items; | ||
} | ||
return items.map(function (item) { return _this.asFoldingRange(item); }); | ||
}; | ||
ProtocolToMonacoConverter.prototype.asFoldingRange = function (item) { | ||
return items.map(item => this.asFoldingRange(item)); | ||
} | ||
asFoldingRange(item) { | ||
return { | ||
@@ -884,4 +868,4 @@ start: item.startLine + 1, | ||
}; | ||
}; | ||
ProtocolToMonacoConverter.prototype.asFoldingRangeKind = function (kind) { | ||
} | ||
asFoldingRangeKind(kind) { | ||
if (kind) { | ||
@@ -899,6 +883,5 @@ switch (kind) { | ||
return undefined; | ||
}; | ||
return ProtocolToMonacoConverter; | ||
}()); | ||
} | ||
} | ||
exports.ProtocolToMonacoConverter = ProtocolToMonacoConverter; | ||
//# sourceMappingURL=monaco-converter.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var disposable_1 = require("./disposable"); | ||
var MonacoDiagnosticCollection = /** @class */ (function () { | ||
function MonacoDiagnosticCollection(name, p2m) { | ||
const disposable_1 = require("./disposable"); | ||
class MonacoDiagnosticCollection { | ||
constructor(name, p2m) { | ||
this.name = name; | ||
@@ -11,12 +11,11 @@ this.p2m = p2m; | ||
} | ||
MonacoDiagnosticCollection.prototype.dispose = function () { | ||
dispose() { | ||
this.toDispose.dispose(); | ||
}; | ||
MonacoDiagnosticCollection.prototype.get = function (uri) { | ||
var diagnostics = this.diagnostics.get(uri); | ||
} | ||
get(uri) { | ||
const diagnostics = this.diagnostics.get(uri); | ||
return !!diagnostics ? diagnostics.diagnostics : []; | ||
}; | ||
MonacoDiagnosticCollection.prototype.set = function (uri, diagnostics) { | ||
var _this = this; | ||
var existing = this.diagnostics.get(uri); | ||
} | ||
set(uri, diagnostics) { | ||
const existing = this.diagnostics.get(uri); | ||
if (existing) { | ||
@@ -26,16 +25,14 @@ existing.diagnostics = diagnostics; | ||
else { | ||
var modelDiagnostics_1 = new MonacoModelDiagnostics(uri, diagnostics, this.name, this.p2m); | ||
this.diagnostics.set(uri, modelDiagnostics_1); | ||
this.toDispose.push(disposable_1.Disposable.create(function () { | ||
_this.diagnostics.delete(uri); | ||
modelDiagnostics_1.dispose(); | ||
const modelDiagnostics = new MonacoModelDiagnostics(uri, diagnostics, this.name, this.p2m); | ||
this.diagnostics.set(uri, modelDiagnostics); | ||
this.toDispose.push(disposable_1.Disposable.create(() => { | ||
this.diagnostics.delete(uri); | ||
modelDiagnostics.dispose(); | ||
})); | ||
} | ||
}; | ||
return MonacoDiagnosticCollection; | ||
}()); | ||
} | ||
} | ||
exports.MonacoDiagnosticCollection = MonacoDiagnosticCollection; | ||
var MonacoModelDiagnostics = /** @class */ (function () { | ||
function MonacoModelDiagnostics(uri, diagnostics, owner, p2m) { | ||
var _this = this; | ||
class MonacoModelDiagnostics { | ||
constructor(uri, diagnostics, owner, p2m) { | ||
this.owner = owner; | ||
@@ -47,39 +44,30 @@ this.p2m = p2m; | ||
this.diagnostics = diagnostics; | ||
monaco.editor.onDidCreateModel(function (model) { return _this.doUpdateModelMarkers(model); }); | ||
monaco.editor.onDidCreateModel(model => this.doUpdateModelMarkers(model)); | ||
} | ||
Object.defineProperty(MonacoModelDiagnostics.prototype, "diagnostics", { | ||
get: function () { | ||
return this._diagnostics; | ||
}, | ||
set: function (diagnostics) { | ||
this._diagnostics = diagnostics; | ||
this._markers = this.p2m.asDiagnostics(diagnostics); | ||
this.updateModelMarkers(); | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoModelDiagnostics.prototype, "markers", { | ||
get: function () { | ||
return this._markers; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
MonacoModelDiagnostics.prototype.dispose = function () { | ||
set diagnostics(diagnostics) { | ||
this._diagnostics = diagnostics; | ||
this._markers = this.p2m.asDiagnostics(diagnostics); | ||
this.updateModelMarkers(); | ||
} | ||
get diagnostics() { | ||
return this._diagnostics; | ||
} | ||
get markers() { | ||
return this._markers; | ||
} | ||
dispose() { | ||
this._markers = []; | ||
this.updateModelMarkers(); | ||
}; | ||
MonacoModelDiagnostics.prototype.updateModelMarkers = function () { | ||
var model = monaco.editor.getModel(this.uri); | ||
this.doUpdateModelMarkers(model); | ||
}; | ||
MonacoModelDiagnostics.prototype.doUpdateModelMarkers = function (model) { | ||
} | ||
updateModelMarkers() { | ||
const model = monaco.editor.getModel(this.uri); | ||
this.doUpdateModelMarkers(model ? model : undefined); | ||
} | ||
doUpdateModelMarkers(model) { | ||
if (model && this.uri.toString() === model.uri.toString()) { | ||
monaco.editor.setModelMarkers(model, this.owner, this._markers); | ||
} | ||
}; | ||
return MonacoModelDiagnostics; | ||
}()); | ||
} | ||
} | ||
exports.MonacoModelDiagnostics = MonacoModelDiagnostics; | ||
//# sourceMappingURL=monaco-diagnostic-collection.js.map |
@@ -1,4 +0,4 @@ | ||
import { BaseLanguageClient, MessageTransports, LanguageClientOptions } from "vscode-base-languageclient/lib/client"; | ||
import { BaseLanguageClient, MessageTransports, LanguageClientOptions } from "vscode-languageclient/lib/client"; | ||
import { IConnectionProvider, IConnection } from './connection'; | ||
export * from 'vscode-base-languageclient/lib/client'; | ||
export * from 'vscode-languageclient/lib/client'; | ||
export declare class MonacoLanguageClient extends BaseLanguageClient { | ||
@@ -5,0 +5,0 @@ static bypassConversion: (result: any) => any; |
"use strict"; | ||
var __extends = (this && this.__extends) || (function () { | ||
var extendStatics = function (d, b) { | ||
extendStatics = Object.setPrototypeOf || | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
} | ||
return function (d, b) { | ||
extendStatics(d, b); | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
})(); | ||
function __export(m) { | ||
@@ -23,20 +10,20 @@ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
* ------------------------------------------------------------------------------------------ */ | ||
var client_1 = require("vscode-base-languageclient/lib/client"); | ||
var typeDefinition_1 = require("vscode-base-languageclient/lib/typeDefinition"); | ||
var implementation_1 = require("vscode-base-languageclient/lib/implementation"); | ||
var colorProvider_1 = require("vscode-base-languageclient/lib/colorProvider"); | ||
var workspaceFolders_1 = require("vscode-base-languageclient/lib/workspaceFolders"); | ||
var foldingRange_1 = require("vscode-base-languageclient/lib/foldingRange"); | ||
__export(require("vscode-base-languageclient/lib/client")); | ||
var MonacoLanguageClient = /** @class */ (function (_super) { | ||
__extends(MonacoLanguageClient, _super); | ||
function MonacoLanguageClient(_a) { | ||
var id = _a.id, name = _a.name, clientOptions = _a.clientOptions, connectionProvider = _a.connectionProvider; | ||
var _this = _super.call(this, id || name.toLowerCase(), name, clientOptions) || this; | ||
_this.connectionProvider = connectionProvider; | ||
_this.createConnection = _this.doCreateConnection.bind(_this); | ||
const client_1 = require("vscode-languageclient/lib/client"); | ||
const typeDefinition_1 = require("vscode-languageclient/lib/typeDefinition"); | ||
const configuration_1 = require("vscode-languageclient/lib/configuration"); | ||
const implementation_1 = require("vscode-languageclient/lib/implementation"); | ||
const colorProvider_1 = require("vscode-languageclient/lib/colorProvider"); | ||
const workspaceFolders_1 = require("vscode-languageclient/lib/workspaceFolders"); | ||
const foldingRange_1 = require("vscode-languageclient/lib/foldingRange"); | ||
const declaration_1 = require("vscode-languageclient/lib/declaration"); | ||
__export(require("vscode-languageclient/lib/client")); | ||
class MonacoLanguageClient extends client_1.BaseLanguageClient { | ||
constructor({ id, name, clientOptions, connectionProvider }) { | ||
super(id || name.toLowerCase(), name, clientOptions); | ||
this.connectionProvider = connectionProvider; | ||
this.createConnection = this.doCreateConnection.bind(this); | ||
// bypass LSP <=> VS Code conversion | ||
var self = _this; | ||
const self = this; | ||
self._p2c = new Proxy(self._p2c, { | ||
get: function (target, prop) { | ||
get: (target, prop) => { | ||
if (prop === 'asUri') { | ||
@@ -49,3 +36,3 @@ return target[prop]; | ||
self._c2p = new Proxy(self._c2p, { | ||
get: function (target, prop) { | ||
get: (target, prop) => { | ||
if (prop === 'asUri') { | ||
@@ -55,7 +42,7 @@ return target[prop]; | ||
if (prop === 'asCompletionParams') { | ||
return function (textDocument, position, context) { | ||
return (textDocument, position, context) => { | ||
return { | ||
textDocument: target.asTextDocumentIdentifier(textDocument), | ||
position: position, | ||
context: context | ||
position, | ||
context | ||
}; | ||
@@ -65,3 +52,3 @@ }; | ||
if (prop === 'asWillSaveTextDocumentParams') { | ||
return function (event) { | ||
return (event) => { | ||
return { | ||
@@ -79,14 +66,14 @@ textDocument: target.asTextDocumentIdentifier(event.document), | ||
}); | ||
return _this; | ||
} | ||
MonacoLanguageClient.prototype.doCreateConnection = function () { | ||
var errorHandler = this.handleConnectionError.bind(this); | ||
var closeHandler = this.handleConnectionClosed.bind(this); | ||
doCreateConnection() { | ||
const errorHandler = this.handleConnectionError.bind(this); | ||
const closeHandler = this.handleConnectionClosed.bind(this); | ||
return this.connectionProvider.get(errorHandler, closeHandler, this.outputChannel); | ||
}; | ||
MonacoLanguageClient.prototype.createMessageTransports = function (encoding) { | ||
} | ||
createMessageTransports(encoding) { | ||
throw new Error('Unsupported'); | ||
}; | ||
MonacoLanguageClient.prototype.registerBuiltinFeatures = function () { | ||
_super.prototype.registerBuiltinFeatures.call(this); | ||
} | ||
registerBuiltinFeatures() { | ||
super.registerBuiltinFeatures(); | ||
this.registerFeature(new configuration_1.ConfigurationFeature(this)); | ||
this.registerFeature(new typeDefinition_1.TypeDefinitionFeature(this)); | ||
@@ -96,10 +83,18 @@ this.registerFeature(new implementation_1.ImplementationFeature(this)); | ||
this.registerFeature(new workspaceFolders_1.WorkspaceFoldersFeature(this)); | ||
var foldingRangeFeature = new foldingRange_1.FoldingRangeFeature(this); | ||
const foldingRangeFeature = new foldingRange_1.FoldingRangeFeature(this); | ||
foldingRangeFeature['asFoldingRanges'] = MonacoLanguageClient.bypassConversion; | ||
this.registerFeature(foldingRangeFeature); | ||
}; | ||
MonacoLanguageClient.bypassConversion = function (result) { return result || undefined; }; | ||
return MonacoLanguageClient; | ||
}(client_1.BaseLanguageClient)); | ||
this.registerFeature(new declaration_1.DeclarationFeature(this)); | ||
const features = this['_features']; | ||
for (const feature of features) { | ||
if (feature instanceof colorProvider_1.ColorProviderFeature) { | ||
feature['asColor'] = MonacoLanguageClient.bypassConversion; | ||
feature['asColorInformations'] = MonacoLanguageClient.bypassConversion; | ||
feature['asColorPresentations'] = MonacoLanguageClient.bypassConversion; | ||
} | ||
} | ||
} | ||
} | ||
MonacoLanguageClient.bypassConversion = (result) => result || undefined; | ||
exports.MonacoLanguageClient = MonacoLanguageClient; | ||
//# sourceMappingURL=monaco-language-client.js.map |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -7,6 +15,6 @@ /* -------------------------------------------------------------------------------------------- | ||
* ------------------------------------------------------------------------------------------ */ | ||
var globToRegExp = require("glob-to-regexp"); | ||
var services_1 = require("./services"); | ||
var monaco_diagnostic_collection_1 = require("./monaco-diagnostic-collection"); | ||
var disposable_1 = require("./disposable"); | ||
const globToRegExp = require("glob-to-regexp"); | ||
const services_1 = require("./services"); | ||
const monaco_diagnostic_collection_1 = require("./monaco-diagnostic-collection"); | ||
const disposable_1 = require("./disposable"); | ||
var MonacoModelIdentifier; | ||
@@ -30,3 +38,3 @@ (function (MonacoModelIdentifier) { | ||
function testGlob(pattern, value) { | ||
var regExp = globToRegExp(pattern, { | ||
const regExp = globToRegExp(pattern, { | ||
extended: true, | ||
@@ -39,5 +47,4 @@ globstar: true | ||
function getLanguages() { | ||
var languages = []; | ||
for (var _i = 0, _a = monaco.languages.getLanguages().map(function (l) { return l.id; }); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
const languages = []; | ||
for (const language of monaco.languages.getLanguages().map(l => l.id)) { | ||
if (languages.indexOf(language) === -1) { | ||
@@ -50,22 +57,17 @@ languages.push(language); | ||
exports.getLanguages = getLanguages; | ||
var MonacoLanguages = /** @class */ (function () { | ||
function MonacoLanguages(p2m, m2p) { | ||
class MonacoLanguages { | ||
constructor(p2m, m2p) { | ||
this.p2m = p2m; | ||
this.m2p = m2p; | ||
} | ||
MonacoLanguages.prototype.match = function (selector, document) { | ||
match(selector, document) { | ||
return this.matchModel(selector, MonacoModelIdentifier.fromDocument(document)); | ||
}; | ||
MonacoLanguages.prototype.createDiagnosticCollection = function (name) { | ||
} | ||
createDiagnosticCollection(name) { | ||
return new monaco_diagnostic_collection_1.MonacoDiagnosticCollection(name || 'default', this.p2m); | ||
}; | ||
MonacoLanguages.prototype.registerCompletionItemProvider = function (selector, provider) { | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
var completionProvider = this.createCompletionProvider.apply(this, [selector, provider].concat(triggerCharacters)); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _a = 0, _b = getLanguages(); _a < _b.length; _a++) { | ||
var language = _b[_a]; | ||
} | ||
registerCompletionItemProvider(selector, provider, ...triggerCharacters) { | ||
const completionProvider = this.createCompletionProvider(selector, provider, ...triggerCharacters); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -77,33 +79,31 @@ providers.push(monaco.languages.registerCompletionItemProvider(language, completionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createCompletionProvider = function (selector, provider) { | ||
var _this = this; | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
} | ||
createCompletionProvider(selector, provider, ...triggerCharacters) { | ||
return { | ||
triggerCharacters: triggerCharacters, | ||
provideCompletionItems: function (model, position, token, context) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
triggerCharacters, | ||
provideCompletionItems: (model, position, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asCompletionParams(model, position, context); | ||
return provider.provideCompletionItems(params, token).then(function (result) { return _this.p2m.asCompletionResult(result); }); | ||
}, | ||
resolveCompletionItem: provider.resolveCompletionItem ? function (item, token) { | ||
var protocolItem = _this.m2p.asCompletionItem(item); | ||
return provider.resolveCompletionItem(protocolItem, token).then(function (resolvedItem) { | ||
var resolvedCompletionItem = _this.p2m.asCompletionItem(resolvedItem); | ||
const wordUntil = model.getWordUntilPosition(position); | ||
const defaultRange = new monaco.Range(position.lineNumber, wordUntil.startColumn, position.lineNumber, wordUntil.endColumn); | ||
const params = this.m2p.asCompletionParams(model, position, context); | ||
const result = yield provider.provideCompletionItems(params, token); | ||
return result && this.p2m.asCompletionResult(result, defaultRange); | ||
}), | ||
resolveCompletionItem: provider.resolveCompletionItem ? (model, position, item, token) => __awaiter(this, void 0, void 0, function* () { | ||
const protocolItem = this.m2p.asCompletionItem(item); | ||
const resolvedItem = yield provider.resolveCompletionItem(protocolItem, token); | ||
if (resolvedItem) { | ||
const resolvedCompletionItem = this.p2m.asCompletionItem(resolvedItem, item.range); | ||
Object.assign(item, resolvedCompletionItem); | ||
return item; | ||
}); | ||
} : undefined | ||
} | ||
return item; | ||
}) : undefined | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerHoverProvider = function (selector, provider) { | ||
var hoverProvider = this.createHoverProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerHoverProvider(selector, provider) { | ||
const hoverProvider = this.createHoverProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -114,24 +114,19 @@ providers.push(monaco.languages.registerHoverProvider(language, hoverProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createHoverProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createHoverProvider(selector, provider) { | ||
return { | ||
provideHover: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideHover: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideHover(params, token).then(function (hover) { return _this.p2m.asHover(hover); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const hover = yield provider.provideHover(params, token); | ||
return hover && this.p2m.asHover(hover); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerSignatureHelpProvider = function (selector, provider) { | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
var signatureHelpProvider = this.createSignatureHelpProvider.apply(this, [selector, provider].concat(triggerCharacters)); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _a = 0, _b = getLanguages(); _a < _b.length; _a++) { | ||
var language = _b[_a]; | ||
} | ||
registerSignatureHelpProvider(selector, provider, ...triggerCharacters) { | ||
const signatureHelpProvider = this.createSignatureHelpProvider(selector, provider, ...triggerCharacters); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -142,26 +137,26 @@ providers.push(monaco.languages.registerSignatureHelpProvider(language, signatureHelpProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createSignatureHelpProvider = function (selector, provider) { | ||
var _this = this; | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
var signatureHelpTriggerCharacters = triggerCharacters; | ||
} | ||
createSignatureHelpProvider(selector, provider, ...triggerCharacters) { | ||
const signatureHelpTriggerCharacters = [...(provider.triggerCharacters || triggerCharacters || [])]; | ||
// TODO support regrigger characters after Monaco udpate | ||
return { | ||
signatureHelpTriggerCharacters: signatureHelpTriggerCharacters, | ||
provideSignatureHelp: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
signatureHelpTriggerCharacters, | ||
provideSignatureHelp: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideSignatureHelp(params, token).then(function (signatureHelp) { return _this.p2m.asSignatureHelp(signatureHelp); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const signatureHelp = yield provider.provideSignatureHelp(params, token, { | ||
// TODO pass context from monaco after Monaco udpate | ||
triggerKind: 1, | ||
isRetrigger: false | ||
}); | ||
return signatureHelp && this.p2m.asSignatureHelp(signatureHelp); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDefinitionProvider = function (selector, provider) { | ||
var definitionProvider = this.createDefinitionProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDefinitionProvider(selector, provider) { | ||
const definitionProvider = this.createDefinitionProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -172,20 +167,19 @@ providers.push(monaco.languages.registerDefinitionProvider(language, definitionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDefinitionProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDefinitionProvider(selector, provider) { | ||
return { | ||
provideDefinition: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideDefinition: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideDefinition(params, token).then(function (result) { return _this.p2m.asDefinitionResult(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideDefinition(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerReferenceProvider = function (selector, provider) { | ||
var referenceProvider = this.createReferenceProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerReferenceProvider(selector, provider) { | ||
const referenceProvider = this.createReferenceProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -196,20 +190,19 @@ providers.push(monaco.languages.registerReferenceProvider(language, referenceProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createReferenceProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createReferenceProvider(selector, provider) { | ||
return { | ||
provideReferences: function (model, position, context, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideReferences: (model, position, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asReferenceParams(model, position, context); | ||
return provider.provideReferences(params, token).then(function (result) { return _this.p2m.asReferences(result); }); | ||
} | ||
const params = this.m2p.asReferenceParams(model, position, context); | ||
const result = yield provider.provideReferences(params, token); | ||
return result && this.p2m.asReferences(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentHighlightProvider = function (selector, provider) { | ||
var documentHighlightProvider = this.createDocumentHighlightProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentHighlightProvider(selector, provider) { | ||
const documentHighlightProvider = this.createDocumentHighlightProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -220,20 +213,19 @@ providers.push(monaco.languages.registerDocumentHighlightProvider(language, documentHighlightProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentHighlightProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentHighlightProvider(selector, provider) { | ||
return { | ||
provideDocumentHighlights: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentHighlights: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideDocumentHighlights(params, token).then(function (result) { return _this.p2m.asDocumentHighlights(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideDocumentHighlights(params, token); | ||
return result && this.p2m.asDocumentHighlights(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentSymbolProvider = function (selector, provider) { | ||
var documentSymbolProvider = this.createDocumentSymbolProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentSymbolProvider(selector, provider) { | ||
const documentSymbolProvider = this.createDocumentSymbolProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -244,20 +236,19 @@ providers.push(monaco.languages.registerDocumentSymbolProvider(language, documentSymbolProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentSymbolProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentSymbolProvider(selector, provider) { | ||
return { | ||
provideDocumentSymbols: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentSymbols: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentSymbolParams(model); | ||
return provider.provideDocumentSymbols(params, token).then(function (result) { return _this.p2m.asDocumentSymbols(result); }); | ||
} | ||
const params = this.m2p.asDocumentSymbolParams(model); | ||
const result = yield provider.provideDocumentSymbols(params, token); | ||
return result && this.p2m.asDocumentSymbols(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerCodeActionsProvider = function (selector, provider) { | ||
var codeActionProvider = this.createCodeActionProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerCodeActionsProvider(selector, provider) { | ||
const codeActionProvider = this.createCodeActionProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -268,20 +259,21 @@ providers.push(monaco.languages.registerCodeActionProvider(language, codeActionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createCodeActionProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createCodeActionProvider(selector, provider) { | ||
return { | ||
provideCodeActions: function (model, range, context, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideCodeActions: (model, range, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
// FIXME: get rid of `!` when https://github.com/microsoft/monaco-editor/issues/1560 is resolved | ||
return undefined; | ||
} | ||
var params = _this.m2p.asCodeActionParams(model, range, context); | ||
return provider.provideCodeActions(params, token).then(function (result) { return _this.p2m.asCodeActions(result); }); | ||
} | ||
const params = this.m2p.asCodeActionParams(model, range, context); | ||
const result = yield provider.provideCodeActions(params, token); | ||
// FIXME: get rid of `|| undefined!` when https://github.com/microsoft/monaco-editor/issues/1560 is resolved | ||
return result && this.p2m.asCodeActions(result) || undefined; | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerCodeLensProvider = function (selector, provider) { | ||
var codeLensProvider = this.createCodeLensProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerCodeLensProvider(selector, provider) { | ||
const codeLensProvider = this.createCodeLensProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -292,31 +284,31 @@ providers.push(monaco.languages.registerCodeLensProvider(language, codeLensProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createCodeLensProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createCodeLensProvider(selector, provider) { | ||
return { | ||
provideCodeLenses: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideCodeLenses: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asCodeLensParams(model); | ||
return provider.provideCodeLenses(params, token).then(function (result) { return _this.p2m.asCodeLenses(result); }); | ||
}, | ||
resolveCodeLens: provider.resolveCodeLens ? function (model, codeLens, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
const params = this.m2p.asCodeLensParams(model); | ||
const result = yield provider.provideCodeLenses(params, token); | ||
return result && this.p2m.asCodeLenses(result); | ||
}), | ||
resolveCodeLens: provider.resolveCodeLens ? (model, codeLens, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return codeLens; | ||
} | ||
var protocolCodeLens = _this.m2p.asCodeLens(codeLens); | ||
return provider.resolveCodeLens(protocolCodeLens, token).then(function (result) { | ||
var resolvedCodeLens = _this.p2m.asCodeLens(result); | ||
const protocolCodeLens = this.m2p.asCodeLens(codeLens); | ||
const result = yield provider.resolveCodeLens(protocolCodeLens, token); | ||
if (result) { | ||
const resolvedCodeLens = this.p2m.asCodeLens(result); | ||
Object.assign(codeLens, resolvedCodeLens); | ||
return codeLens; | ||
}); | ||
} : (function (m, codeLens, t) { return codeLens; }) | ||
} | ||
return codeLens; | ||
}) : ((_, codeLens) => codeLens) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentFormattingEditProvider = function (selector, provider) { | ||
var documentFormattingEditProvider = this.createDocumentFormattingEditProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentFormattingEditProvider(selector, provider) { | ||
const documentFormattingEditProvider = this.createDocumentFormattingEditProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -327,20 +319,19 @@ providers.push(monaco.languages.registerDocumentFormattingEditProvider(language, documentFormattingEditProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentFormattingEditProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentFormattingEditProvider(selector, provider) { | ||
return { | ||
provideDocumentFormattingEdits: function (model, options, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentFormattingEdits: (model, options, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentFormattingParams(model, options); | ||
return provider.provideDocumentFormattingEdits(params, token).then(function (result) { return _this.p2m.asTextEdits(result); }); | ||
} | ||
const params = this.m2p.asDocumentFormattingParams(model, options); | ||
const result = yield provider.provideDocumentFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentRangeFormattingEditProvider = function (selector, provider) { | ||
var documentRangeFormattingEditProvider = this.createDocumentRangeFormattingEditProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentRangeFormattingEditProvider(selector, provider) { | ||
const documentRangeFormattingEditProvider = this.createDocumentRangeFormattingEditProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -351,24 +342,19 @@ providers.push(monaco.languages.registerDocumentRangeFormattingEditProvider(language, documentRangeFormattingEditProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentRangeFormattingEditProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentRangeFormattingEditProvider(selector, provider) { | ||
return { | ||
provideDocumentRangeFormattingEdits: function (model, range, options, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentRangeFormattingEdits: (model, range, options, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentRangeFormattingParams(model, range, options); | ||
return provider.provideDocumentRangeFormattingEdits(params, token).then(function (result) { return _this.p2m.asTextEdits(result); }); | ||
} | ||
const params = this.m2p.asDocumentRangeFormattingParams(model, range, options); | ||
const result = yield provider.provideDocumentRangeFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerOnTypeFormattingEditProvider = function (selector, provider, firstTriggerCharacter) { | ||
var moreTriggerCharacter = []; | ||
for (var _i = 3; _i < arguments.length; _i++) { | ||
moreTriggerCharacter[_i - 3] = arguments[_i]; | ||
} | ||
var onTypeFormattingEditProvider = this.createOnTypeFormattingEditProvider.apply(this, [selector, provider, firstTriggerCharacter].concat(moreTriggerCharacter)); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _a = 0, _b = getLanguages(); _a < _b.length; _a++) { | ||
var language = _b[_a]; | ||
} | ||
registerOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter) { | ||
const onTypeFormattingEditProvider = this.createOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -379,26 +365,21 @@ providers.push(monaco.languages.registerOnTypeFormattingEditProvider(language, onTypeFormattingEditProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createOnTypeFormattingEditProvider = function (selector, provider, firstTriggerCharacter) { | ||
var _this = this; | ||
var moreTriggerCharacter = []; | ||
for (var _i = 3; _i < arguments.length; _i++) { | ||
moreTriggerCharacter[_i - 3] = arguments[_i]; | ||
} | ||
var autoFormatTriggerCharacters = [firstTriggerCharacter].concat(moreTriggerCharacter); | ||
} | ||
createOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter) { | ||
const autoFormatTriggerCharacters = [firstTriggerCharacter].concat(moreTriggerCharacter); | ||
return { | ||
autoFormatTriggerCharacters: autoFormatTriggerCharacters, | ||
provideOnTypeFormattingEdits: function (model, position, ch, options, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
autoFormatTriggerCharacters, | ||
provideOnTypeFormattingEdits: (model, position, ch, options, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentOnTypeFormattingParams(model, position, ch, options); | ||
return provider.provideOnTypeFormattingEdits(params, token).then(function (result) { return _this.p2m.asTextEdits(result); }); | ||
} | ||
const params = this.m2p.asDocumentOnTypeFormattingParams(model, position, ch, options); | ||
const result = yield provider.provideOnTypeFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerRenameProvider = function (selector, provider) { | ||
var renameProvider = this.createRenameProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerRenameProvider(selector, provider) { | ||
const renameProvider = this.createRenameProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -409,20 +390,19 @@ providers.push(monaco.languages.registerRenameProvider(language, renameProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createRenameProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createRenameProvider(selector, provider) { | ||
return { | ||
provideRenameEdits: function (model, position, newName, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideRenameEdits: (model, position, newName, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asRenameParams(model, position, newName); | ||
return provider.provideRenameEdits(params, token).then(function (result) { return _this.p2m.asWorkspaceEdit(result); }); | ||
} | ||
const params = this.m2p.asRenameParams(model, position, newName); | ||
const result = yield provider.provideRenameEdits(params, token); | ||
return result && this.p2m.asWorkspaceEdit(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerDocumentLinkProvider = function (selector, provider) { | ||
var linkProvider = this.createDocumentLinkProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerDocumentLinkProvider(selector, provider) { | ||
const linkProvider = this.createDocumentLinkProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -433,33 +413,32 @@ providers.push(monaco.languages.registerLinkProvider(language, linkProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentLinkProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentLinkProvider(selector, provider) { | ||
return { | ||
provideLinks: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideLinks: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asDocumentLinkParams(model); | ||
return provider.provideDocumentLinks(params, token).then(function (result) { return _this.p2m.asDocumentLinks(result); }); | ||
}, | ||
resolveLink: function (link, token) { | ||
const params = this.m2p.asDocumentLinkParams(model); | ||
const result = yield provider.provideDocumentLinks(params, token); | ||
return result && this.p2m.asDocumentLinks(result); | ||
}), | ||
resolveLink: (link, token) => __awaiter(this, void 0, void 0, function* () { | ||
// resolve the link if the provider supports it | ||
// and the link doesn't have a url set | ||
if (provider.resolveDocumentLink && (link.url === null || link.url === undefined)) { | ||
var documentLink = _this.m2p.asDocumentLink(link); | ||
return provider.resolveDocumentLink(documentLink, token).then(function (result) { | ||
var resolvedLink = _this.p2m.asDocumentLink(result); | ||
const documentLink = this.m2p.asDocumentLink(link); | ||
const result = yield provider.resolveDocumentLink(documentLink, token); | ||
if (result) { | ||
const resolvedLink = this.p2m.asDocumentLink(result); | ||
Object.assign(link, resolvedLink); | ||
return link; | ||
}); | ||
} | ||
} | ||
return link; | ||
} | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerImplementationProvider = function (selector, provider) { | ||
var implementationProvider = this.createImplementationProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerImplementationProvider(selector, provider) { | ||
const implementationProvider = this.createImplementationProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -470,20 +449,19 @@ providers.push(monaco.languages.registerImplementationProvider(language, implementationProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createImplementationProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createImplementationProvider(selector, provider) { | ||
return { | ||
provideImplementation: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideImplementation: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideImplementation(params, token).then(function (result) { return _this.p2m.asDefinitionResult(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideImplementation(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerTypeDefinitionProvider = function (selector, provider) { | ||
var typeDefinitionProvider = this.createTypeDefinitionProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerTypeDefinitionProvider(selector, provider) { | ||
const typeDefinitionProvider = this.createTypeDefinitionProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -494,20 +472,19 @@ providers.push(monaco.languages.registerTypeDefinitionProvider(language, typeDefinitionProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createTypeDefinitionProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createTypeDefinitionProvider(selector, provider) { | ||
return { | ||
provideTypeDefinition: function (model, position, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
provideTypeDefinition: (model, position, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var params = _this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideTypeDefinition(params, token).then(function (result) { return _this.p2m.asDefinitionResult(result); }); | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
const result = yield provider.provideTypeDefinition(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerColorProvider = function (selector, provider) { | ||
var documentColorProvider = this.createDocumentColorProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerColorProvider(selector, provider) { | ||
const documentColorProvider = this.createDocumentColorProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -518,32 +495,32 @@ providers.push(monaco.languages.registerColorProvider(language, documentColorProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createDocumentColorProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createDocumentColorProvider(selector, provider) { | ||
return { | ||
provideDocumentColors: function (model, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideDocumentColors: (model, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var textDocument = _this.m2p.asTextDocumentIdentifier(model); | ||
return provider.provideDocumentColors({ textDocument: textDocument }, token).then(function (result) { return _this.p2m.asColorInformations(result); }); | ||
}, | ||
provideColorPresentations: function (model, info, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const result = yield provider.provideDocumentColors({ textDocument }, token); | ||
return result && this.p2m.asColorInformations(result); | ||
}), | ||
provideColorPresentations: (model, info, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var textDocument = _this.m2p.asTextDocumentIdentifier(model); | ||
var range = _this.m2p.asRange(info.range); | ||
return provider.provideColorPresentations({ | ||
textDocument: textDocument, | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const range = this.m2p.asRange(info.range); | ||
const result = yield provider.provideColorPresentations({ | ||
textDocument, | ||
color: info.color, | ||
range: range | ||
}, token).then(function (result) { return _this.p2m.asColorPresentations(result); }); | ||
} | ||
range | ||
}, token); | ||
return result && this.p2m.asColorPresentations(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.registerFoldingRangeProvider = function (selector, provider) { | ||
var foldingRangeProvider = this.createFoldingRangeProvider(selector, provider); | ||
var providers = new disposable_1.DisposableCollection(); | ||
for (var _i = 0, _a = getLanguages(); _i < _a.length; _i++) { | ||
var language = _a[_i]; | ||
} | ||
registerFoldingRangeProvider(selector, provider) { | ||
const foldingRangeProvider = this.createFoldingRangeProvider(selector, provider); | ||
const providers = new disposable_1.DisposableCollection(); | ||
for (const language of getLanguages()) { | ||
if (this.matchLanguage(selector, language)) { | ||
@@ -554,21 +531,20 @@ providers.push(monaco.languages.registerFoldingRangeProvider(language, foldingRangeProvider)); | ||
return providers; | ||
}; | ||
MonacoLanguages.prototype.createFoldingRangeProvider = function (selector, provider) { | ||
var _this = this; | ||
} | ||
createFoldingRangeProvider(selector, provider) { | ||
return { | ||
provideFoldingRanges: function (model, context, token) { | ||
if (!_this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
provideFoldingRanges: (model, context, token) => __awaiter(this, void 0, void 0, function* () { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined; | ||
} | ||
var textDocument = _this.m2p.asTextDocumentIdentifier(model); | ||
return provider.provideFoldingRanges({ | ||
textDocument: textDocument | ||
}, token).then(function (result) { return _this.p2m.asFoldingRanges(result); }); | ||
} | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const result = yield provider.provideFoldingRanges({ | ||
textDocument | ||
}, token); | ||
return result && this.p2m.asFoldingRanges(result); | ||
}) | ||
}; | ||
}; | ||
MonacoLanguages.prototype.matchModel = function (selector, model) { | ||
var _this = this; | ||
} | ||
matchModel(selector, model) { | ||
if (Array.isArray(selector)) { | ||
return selector.some(function (filter) { return _this.matchModel(filter, model); }); | ||
return selector.some(filter => this.matchModel(filter, model)); | ||
} | ||
@@ -588,7 +564,6 @@ if (services_1.DocumentFilter.is(selector)) { | ||
return selector === model.languageId; | ||
}; | ||
MonacoLanguages.prototype.matchLanguage = function (selector, languageId) { | ||
var _this = this; | ||
} | ||
matchLanguage(selector, languageId) { | ||
if (Array.isArray(selector)) { | ||
return selector.some(function (filter) { return _this.matchLanguage(filter, languageId); }); | ||
return selector.some(filter => this.matchLanguage(filter, languageId)); | ||
} | ||
@@ -599,6 +574,5 @@ if (services_1.DocumentFilter.is(selector)) { | ||
return selector === languageId; | ||
}; | ||
return MonacoLanguages; | ||
}()); | ||
} | ||
} | ||
exports.MonacoLanguages = MonacoLanguages; | ||
//# sourceMappingURL=monaco-languages.js.map |
@@ -7,14 +7,13 @@ "use strict"; | ||
* ------------------------------------------------------------------------------------------ */ | ||
var monaco_converter_1 = require("./monaco-converter"); | ||
var monaco_commands_1 = require("./monaco-commands"); | ||
var monaco_languages_1 = require("./monaco-languages"); | ||
var monaco_workspace_1 = require("./monaco-workspace"); | ||
var console_window_1 = require("./console-window"); | ||
var services_1 = require("./services"); | ||
const monaco_converter_1 = require("./monaco-converter"); | ||
const monaco_commands_1 = require("./monaco-commands"); | ||
const monaco_languages_1 = require("./monaco-languages"); | ||
const monaco_workspace_1 = require("./monaco-workspace"); | ||
const console_window_1 = require("./console-window"); | ||
const services_1 = require("./services"); | ||
var MonacoServices; | ||
(function (MonacoServices) { | ||
function create(editor, options) { | ||
if (options === void 0) { options = {}; } | ||
var m2p = new monaco_converter_1.MonacoToProtocolConverter(); | ||
var p2m = new monaco_converter_1.ProtocolToMonacoConverter(); | ||
function create(editor, options = {}) { | ||
const m2p = new monaco_converter_1.MonacoToProtocolConverter(); | ||
const p2m = new monaco_converter_1.ProtocolToMonacoConverter(); | ||
return { | ||
@@ -28,5 +27,4 @@ commands: new monaco_commands_1.MonacoCommands(editor), | ||
MonacoServices.create = create; | ||
function install(editor, options) { | ||
if (options === void 0) { options = {}; } | ||
var services = create(editor, options); | ||
function install(editor, options = {}) { | ||
const services = create(editor, options); | ||
services_1.Services.install(services); | ||
@@ -33,0 +31,0 @@ return services; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var services_1 = require("./services"); | ||
var MonacoWorkspace = /** @class */ (function () { | ||
function MonacoWorkspace(p2m, m2p, _rootUri) { | ||
if (_rootUri === void 0) { _rootUri = null; } | ||
var _this = this; | ||
const services_1 = require("./services"); | ||
class MonacoWorkspace { | ||
constructor(p2m, m2p, _rootUri = null) { | ||
this.p2m = p2m; | ||
@@ -15,19 +13,14 @@ this.m2p = m2p; | ||
this.onDidChangeTextDocumentEmitter = new services_1.Emitter(); | ||
for (var _i = 0, _a = monaco.editor.getModels(); _i < _a.length; _i++) { | ||
var model = _a[_i]; | ||
for (const model of monaco.editor.getModels()) { | ||
this.addModel(model); | ||
} | ||
monaco.editor.onDidCreateModel(function (model) { return _this.addModel(model); }); | ||
monaco.editor.onWillDisposeModel(function (model) { return _this.removeModel(model); }); | ||
monaco.editor.onDidCreateModel(model => this.addModel(model)); | ||
monaco.editor.onWillDisposeModel(model => this.removeModel(model)); | ||
} | ||
Object.defineProperty(MonacoWorkspace.prototype, "rootUri", { | ||
get: function () { | ||
return this._rootUri; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
MonacoWorkspace.prototype.removeModel = function (model) { | ||
var uri = model.uri.toString(); | ||
var document = this.documents.get(uri); | ||
get rootUri() { | ||
return this._rootUri; | ||
} | ||
removeModel(model) { | ||
const uri = model.uri.toString(); | ||
const document = this.documents.get(uri); | ||
if (document) { | ||
@@ -37,93 +30,72 @@ this.documents.delete(uri); | ||
} | ||
}; | ||
MonacoWorkspace.prototype.addModel = function (model) { | ||
var _this = this; | ||
var uri = model.uri.toString(); | ||
var document = this.setModel(uri, model); | ||
} | ||
addModel(model) { | ||
const uri = model.uri.toString(); | ||
const document = this.setModel(uri, model); | ||
this.onDidOpenTextDocumentEmitter.fire(document); | ||
model.onDidChangeContent(function (event) { | ||
return _this.onDidChangeContent(uri, model, event); | ||
}); | ||
}; | ||
MonacoWorkspace.prototype.onDidChangeContent = function (uri, model, event) { | ||
var textDocument = this.setModel(uri, model); | ||
var contentChanges = []; | ||
for (var _i = 0, _a = event.changes; _i < _a.length; _i++) { | ||
var change = _a[_i]; | ||
var range = this.m2p.asRange(change.range); | ||
var rangeLength = change.rangeLength; | ||
var text = change.text; | ||
contentChanges.push({ range: range, rangeLength: rangeLength, text: text }); | ||
model.onDidChangeContent(event => this.onDidChangeContent(uri, model, event)); | ||
} | ||
onDidChangeContent(uri, model, event) { | ||
const textDocument = this.setModel(uri, model); | ||
const contentChanges = []; | ||
for (const change of event.changes) { | ||
const range = this.m2p.asRange(change.range); | ||
const rangeLength = change.rangeLength; | ||
const text = change.text; | ||
contentChanges.push({ range, rangeLength, text }); | ||
} | ||
this.onDidChangeTextDocumentEmitter.fire({ | ||
textDocument: textDocument, | ||
contentChanges: contentChanges | ||
textDocument, | ||
contentChanges | ||
}); | ||
}; | ||
MonacoWorkspace.prototype.setModel = function (uri, model) { | ||
var document = services_1.TextDocument.create(uri, model.getModeId(), model.getVersionId(), model.getValue()); | ||
} | ||
setModel(uri, model) { | ||
const document = services_1.TextDocument.create(uri, model.getModeId(), model.getVersionId(), model.getValue()); | ||
this.documents.set(uri, document); | ||
return document; | ||
}; | ||
Object.defineProperty(MonacoWorkspace.prototype, "textDocuments", { | ||
get: function () { | ||
return Array.from(this.documents.values()); | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoWorkspace.prototype, "onDidOpenTextDocument", { | ||
get: function () { | ||
return this.onDidOpenTextDocumentEmitter.event; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoWorkspace.prototype, "onDidCloseTextDocument", { | ||
get: function () { | ||
return this.onDidCloseTextDocumentEmitter.event; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
Object.defineProperty(MonacoWorkspace.prototype, "onDidChangeTextDocument", { | ||
get: function () { | ||
return this.onDidChangeTextDocumentEmitter.event; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
MonacoWorkspace.prototype.applyEdit = function (workspaceEdit) { | ||
var edit = this.p2m.asWorkspaceEdit(workspaceEdit); | ||
} | ||
get textDocuments() { | ||
return Array.from(this.documents.values()); | ||
} | ||
get onDidOpenTextDocument() { | ||
return this.onDidOpenTextDocumentEmitter.event; | ||
} | ||
get onDidCloseTextDocument() { | ||
return this.onDidCloseTextDocumentEmitter.event; | ||
} | ||
get onDidChangeTextDocument() { | ||
return this.onDidChangeTextDocumentEmitter.event; | ||
} | ||
applyEdit(workspaceEdit) { | ||
const edit = this.p2m.asWorkspaceEdit(workspaceEdit); | ||
// Collect all referenced models | ||
var models = edit.edits.reduce(function (acc, currentEdit) { | ||
var textEdit = currentEdit; | ||
const models = edit.edits ? edit.edits.reduce((acc, currentEdit) => { | ||
const textEdit = currentEdit; | ||
acc[textEdit.resource.toString()] = monaco.editor.getModel(textEdit.resource); | ||
return acc; | ||
}, {}); | ||
}, {}) : {}; | ||
// If any of the models do not exist, refuse to apply the edit. | ||
if (!Object.keys(models).map(function (uri) { return models[uri]; }).every(function (model) { return !!model; })) { | ||
if (!Object.keys(models).map(uri => models[uri]).every(model => !!model)) { | ||
return Promise.resolve(false); | ||
} | ||
// Group edits by resource so we can batch them when applying | ||
var editsByResource = edit.edits.reduce(function (acc, currentEdit) { | ||
var _a; | ||
var textEdit = currentEdit; | ||
var uri = textEdit.resource.toString(); | ||
const editsByResource = edit.edits ? edit.edits.reduce((acc, currentEdit) => { | ||
const textEdit = currentEdit; | ||
const uri = textEdit.resource.toString(); | ||
if (!(uri in acc)) { | ||
acc[uri] = []; | ||
} | ||
var operations = textEdit.edits.map(function (edit) { | ||
const operations = textEdit.edits.map(edit => { | ||
return { | ||
range: monaco.Range.lift(edit.range), | ||
text: edit.text | ||
text: edit.text, | ||
}; | ||
}); | ||
(_a = acc[uri]).push.apply(_a, operations); | ||
acc[uri].push(...operations); | ||
return acc; | ||
}, {}); | ||
}, {}) : {}; | ||
// Apply edits for each resource | ||
Object.keys(editsByResource).forEach(function (uri) { | ||
Object.keys(editsByResource).forEach(uri => { | ||
models[uri].pushEditOperations([], // Do not try and preserve editor selections. | ||
editsByResource[uri].map(function (resourceEdit) { | ||
editsByResource[uri].map(resourceEdit => { | ||
return { | ||
@@ -135,9 +107,8 @@ identifier: { major: 1, minor: 0 }, | ||
}; | ||
}), function () { return []; }); | ||
}), () => []); | ||
}); | ||
return Promise.resolve(true); | ||
}; | ||
return MonacoWorkspace; | ||
}()); | ||
} | ||
} | ||
exports.MonacoWorkspace = MonacoWorkspace; | ||
//# sourceMappingURL=monaco-workspace.js.map |
@@ -7,9 +7,9 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var path = require("path"); | ||
var Module = module.parent.require('module'); | ||
var originalRequire = Module.prototype.require; | ||
const path = require("path"); | ||
const Module = module.parent.require('module'); | ||
const originalRequire = Module.prototype.require; | ||
Module.prototype.require = function (id, options) { | ||
var resolvedId = id === 'vscode' ? path.resolve(__dirname, 'vscode-compatibility.js') : id; | ||
const resolvedId = id === 'vscode' ? path.resolve(__dirname, 'vscode-compatibility.js') : id; | ||
return originalRequire.call(this, resolvedId, options); | ||
}; | ||
//# sourceMappingURL=register-vscode.js.map |
@@ -1,2 +0,2 @@ | ||
import { DocumentSelector, MessageActionItem, MessageType, TextDocumentPositionParams, ReferenceParams, CodeActionParams, CodeLensParams, DocumentFormattingParams, DocumentRangeFormattingParams, DocumentOnTypeFormattingParams, RenameParams, DocumentLinkParams, WorkspaceClientCapabilities, DidChangeTextDocumentParams, Diagnostic, TextDocument, CompletionItem, CompletionList, Hover, SignatureHelp, Definition, Location, DocumentHighlight, SymbolInformation, Command, CodeLens, TextEdit, WorkspaceEdit, DocumentLink, TextDocumentSaveReason, DocumentSymbolParams, WorkspaceSymbolParams, TextDocumentContentChangeEvent, CompletionParams, ColorInformation, ColorPresentation, DocumentColorParams, ColorPresentationParams, FoldingRange, FoldingRangeRequestParam, DocumentSymbol, CodeAction } from 'vscode-languageserver-protocol/lib/main'; | ||
import { DocumentSelector, MessageActionItem, MessageType, TextDocumentPositionParams, ReferenceParams, CodeActionParams, CodeLensParams, DocumentFormattingParams, DocumentRangeFormattingParams, DocumentOnTypeFormattingParams, RenameParams, DocumentLinkParams, WorkspaceClientCapabilities, DidChangeTextDocumentParams, Diagnostic, TextDocument, CompletionItem, CompletionList, Hover, SignatureHelp, Definition, Location, DocumentHighlight, SymbolInformation, Command, CodeLens, TextEdit, WorkspaceEdit, DocumentLink, TextDocumentSaveReason, DocumentSymbolParams, WorkspaceSymbolParams, TextDocumentContentChangeEvent, CompletionParams, ColorInformation, ColorPresentation, DocumentColorParams, ColorPresentationParams, FoldingRange, FoldingRangeRequestParam, DocumentSymbol, CodeAction, Declaration, SelectionRangeParams, SelectionRange } from 'vscode-languageserver-protocol'; | ||
import { Disposable, CancellationToken, Event, Emitter } from 'vscode-jsonrpc'; | ||
@@ -21,49 +21,63 @@ import Uri from 'vscode-uri'; | ||
} | ||
export declare type ProviderResult<T> = T | undefined | null | PromiseLike<T | undefined | null>; | ||
export interface CompletionItemProvider { | ||
provideCompletionItems(params: CompletionParams, token: CancellationToken): Thenable<CompletionItem[] | CompletionList>; | ||
resolveCompletionItem?(item: CompletionItem, token: CancellationToken): Thenable<CompletionItem>; | ||
provideCompletionItems(params: CompletionParams, token: CancellationToken): ProviderResult<CompletionItem[] | CompletionList>; | ||
resolveCompletionItem?(item: CompletionItem, token: CancellationToken): ProviderResult<CompletionItem>; | ||
} | ||
export interface HoverProvider { | ||
provideHover(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Hover>; | ||
provideHover(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Hover>; | ||
} | ||
export declare enum SignatureHelpTriggerKind { | ||
Invoke = 1, | ||
TriggerCharacter = 2, | ||
ContentChange = 3 | ||
} | ||
export interface SignatureHelpContext { | ||
readonly triggerKind: SignatureHelpTriggerKind; | ||
readonly triggerCharacter?: string; | ||
readonly isRetrigger: boolean; | ||
readonly activeSignatureHelp?: SignatureHelp; | ||
} | ||
export interface SignatureHelpProvider { | ||
provideSignatureHelp(params: TextDocumentPositionParams, token: CancellationToken): Thenable<SignatureHelp>; | ||
readonly triggerCharacters?: ReadonlyArray<string>; | ||
readonly retriggerCharacters?: ReadonlyArray<string>; | ||
provideSignatureHelp(params: TextDocumentPositionParams, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>; | ||
} | ||
export interface DefinitionProvider { | ||
provideDefinition(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideDefinition(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface ReferenceProvider { | ||
provideReferences(params: ReferenceParams, token: CancellationToken): Thenable<Location[]>; | ||
provideReferences(params: ReferenceParams, token: CancellationToken): ProviderResult<Location[]>; | ||
} | ||
export interface DocumentHighlightProvider { | ||
provideDocumentHighlights(params: TextDocumentPositionParams, token: CancellationToken): Thenable<DocumentHighlight[]>; | ||
provideDocumentHighlights(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<DocumentHighlight[]>; | ||
} | ||
export interface DocumentSymbolProvider { | ||
provideDocumentSymbols(params: DocumentSymbolParams, token: CancellationToken): Thenable<SymbolInformation[] | DocumentSymbol[]>; | ||
provideDocumentSymbols(params: DocumentSymbolParams, token: CancellationToken): ProviderResult<SymbolInformation[] | DocumentSymbol[]>; | ||
} | ||
export interface WorkspaceSymbolProvider { | ||
provideWorkspaceSymbols(params: WorkspaceSymbolParams, token: CancellationToken): Thenable<SymbolInformation[]>; | ||
provideWorkspaceSymbols(params: WorkspaceSymbolParams, token: CancellationToken): ProviderResult<SymbolInformation[]>; | ||
} | ||
export interface CodeActionProvider { | ||
provideCodeActions(params: CodeActionParams, token: CancellationToken): Thenable<(Command | CodeAction)[]>; | ||
provideCodeActions(params: CodeActionParams, token: CancellationToken): ProviderResult<(Command | CodeAction)[]>; | ||
} | ||
export interface CodeLensProvider { | ||
provideCodeLenses(params: CodeLensParams, token: CancellationToken): Thenable<CodeLens[]>; | ||
resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): Thenable<CodeLens>; | ||
provideCodeLenses(params: CodeLensParams, token: CancellationToken): ProviderResult<CodeLens[]>; | ||
resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): ProviderResult<CodeLens>; | ||
} | ||
export interface DocumentFormattingEditProvider { | ||
provideDocumentFormattingEdits(params: DocumentFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideDocumentFormattingEdits(params: DocumentFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface DocumentRangeFormattingEditProvider { | ||
provideDocumentRangeFormattingEdits(params: DocumentRangeFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideDocumentRangeFormattingEdits(params: DocumentRangeFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface OnTypeFormattingEditProvider { | ||
provideOnTypeFormattingEdits(params: DocumentOnTypeFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideOnTypeFormattingEdits(params: DocumentOnTypeFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface RenameProvider { | ||
provideRenameEdits(params: RenameParams, token: CancellationToken): Thenable<WorkspaceEdit>; | ||
provideRenameEdits(params: RenameParams, token: CancellationToken): ProviderResult<WorkspaceEdit>; | ||
} | ||
export interface DocumentLinkProvider { | ||
provideDocumentLinks(params: DocumentLinkParams, token: CancellationToken): Thenable<DocumentLink[]>; | ||
resolveDocumentLink?(link: DocumentLink, token: CancellationToken): Thenable<DocumentLink>; | ||
provideDocumentLinks(params: DocumentLinkParams, token: CancellationToken): ProviderResult<DocumentLink[]>; | ||
resolveDocumentLink?(link: DocumentLink, token: CancellationToken): ProviderResult<DocumentLink>; | ||
} | ||
@@ -78,14 +92,20 @@ export interface DocumentIdentifier { | ||
export interface ImplementationProvider { | ||
provideImplementation(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideImplementation(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface TypeDefinitionProvider { | ||
provideTypeDefinition(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideTypeDefinition(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface DeclarationProvider { | ||
provideDeclaration(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Declaration>; | ||
} | ||
export interface DocumentColorProvider { | ||
provideDocumentColors(params: DocumentColorParams, token: CancellationToken): Thenable<ColorInformation[]>; | ||
provideColorPresentations(params: ColorPresentationParams, token: CancellationToken): Thenable<ColorPresentation[]>; | ||
provideDocumentColors(params: DocumentColorParams, token: CancellationToken): ProviderResult<ColorInformation[]>; | ||
provideColorPresentations(params: ColorPresentationParams, token: CancellationToken): ProviderResult<ColorPresentation[]>; | ||
} | ||
export interface FoldingRangeProvider { | ||
provideFoldingRanges(params: FoldingRangeRequestParam, token: CancellationToken): Thenable<FoldingRange[]>; | ||
provideFoldingRanges(params: FoldingRangeRequestParam, token: CancellationToken): ProviderResult<FoldingRange[]>; | ||
} | ||
export interface SelectionRangeProvider { | ||
provideSelectionRanges(params: SelectionRangeParams, token: CancellationToken): ProviderResult<SelectionRange[]>; | ||
} | ||
export interface Languages { | ||
@@ -96,3 +116,3 @@ match(selector: DocumentSelector, document: DocumentIdentifier): boolean; | ||
registerHoverProvider?(selector: DocumentSelector, provider: HoverProvider): Disposable; | ||
registerSignatureHelpProvider?(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable; | ||
registerSignatureHelpProvider?(selector: DocumentSelector, provider: SignatureHelpProvider): Disposable; | ||
registerDefinitionProvider?(selector: DocumentSelector, provider: DefinitionProvider): Disposable; | ||
@@ -112,4 +132,6 @@ registerReferenceProvider?(selector: DocumentSelector, provider: ReferenceProvider): Disposable; | ||
registerTypeDefinitionProvider?(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable; | ||
registerDeclarationProvider?(selector: DocumentSelector, provider: DeclarationProvider): Disposable; | ||
registerColorProvider?(selector: DocumentSelector, provider: DocumentColorProvider): Disposable; | ||
registerFoldingRangeProvider?(selector: DocumentSelector, provider: FoldingRangeProvider): Disposable; | ||
registerSelectionRangeProvider?(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable; | ||
} | ||
@@ -123,3 +145,3 @@ export interface TextDocumentDidChangeEvent { | ||
readonly reason: TextDocumentSaveReason; | ||
waitUntil?(thenable: Thenable<TextEdit[]>): void; | ||
waitUntil?(PromiseLike: PromiseLike<TextEdit[]>): void; | ||
} | ||
@@ -154,2 +176,4 @@ export declare enum ConfigurationTarget { | ||
readonly rootUri: string | null; | ||
readonly workspaceFolders?: typeof import('vscode').workspace.workspaceFolders; | ||
readonly onDidChangeWorkspaceFolders?: typeof import('vscode').workspace.onDidChangeWorkspaceFolders; | ||
readonly textDocuments: TextDocument[]; | ||
@@ -162,3 +186,3 @@ readonly onDidOpenTextDocument: Event<TextDocument>; | ||
readonly onDidSaveTextDocument?: Event<TextDocument>; | ||
applyEdit(changes: WorkspaceEdit): Thenable<boolean>; | ||
applyEdit(changes: WorkspaceEdit): PromiseLike<boolean>; | ||
createFileSystemWatcher?(globPattern: string, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher; | ||
@@ -175,5 +199,6 @@ } | ||
export interface Window { | ||
showMessage<T extends MessageActionItem>(type: MessageType, message: string, ...actions: T[]): Thenable<T | undefined>; | ||
showMessage<T extends MessageActionItem>(type: MessageType, message: string, ...actions: T[]): PromiseLike<T | undefined>; | ||
createOutputChannel?(name: string): OutputChannel; | ||
withProgress?: typeof import('vscode').window.withProgress; | ||
} | ||
//# sourceMappingURL=services.d.ts.map |
@@ -10,4 +10,4 @@ /* -------------------------------------------------------------------------------------------- | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var main_1 = require("vscode-languageserver-protocol/lib/main"); | ||
var vscode_jsonrpc_1 = require("vscode-jsonrpc"); | ||
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol"); | ||
const vscode_jsonrpc_1 = require("vscode-jsonrpc"); | ||
exports.Disposable = vscode_jsonrpc_1.Disposable; | ||
@@ -20,6 +20,6 @@ exports.CancellationToken = vscode_jsonrpc_1.CancellationToken; | ||
(function (Services) { | ||
var global = window; | ||
var symbol = Symbol('Services'); | ||
Services.get = function () { | ||
var services = global[symbol]; | ||
const global = window; | ||
const symbol = Symbol('Services'); | ||
Services.get = () => { | ||
const services = global[symbol]; | ||
if (!services) { | ||
@@ -32,3 +32,3 @@ throw new Error('Language Client services has not been installed'); | ||
if (global[symbol]) { | ||
console.error(new Error('Language Client services has been overriden')); | ||
console.error(new Error('Language Client services has been overridden')); | ||
} | ||
@@ -43,5 +43,11 @@ global[symbol] = services; | ||
} | ||
return selector.every(function (value) { return typeof value === 'string' || main_1.DocumentFilter.is(value); }); | ||
return selector.every(value => typeof value === 'string' || vscode_languageserver_protocol_1.DocumentFilter.is(value)); | ||
} | ||
exports.isDocumentSelector = isDocumentSelector; | ||
var SignatureHelpTriggerKind; | ||
(function (SignatureHelpTriggerKind) { | ||
SignatureHelpTriggerKind[SignatureHelpTriggerKind["Invoke"] = 1] = "Invoke"; | ||
SignatureHelpTriggerKind[SignatureHelpTriggerKind["TriggerCharacter"] = 2] = "TriggerCharacter"; | ||
SignatureHelpTriggerKind[SignatureHelpTriggerKind["ContentChange"] = 3] = "ContentChange"; | ||
})(SignatureHelpTriggerKind = exports.SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = {})); | ||
var DocumentIdentifier; | ||
@@ -48,0 +54,0 @@ (function (DocumentIdentifier) { |
@@ -14,84 +14,54 @@ "use strict"; | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var vscode_uri_1 = require("vscode-uri"); | ||
var disposable_1 = require("./disposable"); | ||
var services_1 = require("./services"); | ||
const vscode = require("vscode"); | ||
const vscode_uri_1 = require("vscode-uri"); | ||
const disposable_1 = require("./disposable"); | ||
const services_1 = require("./services"); | ||
function createVSCodeApi(servicesProvider) { | ||
var _this = this; | ||
var unsupported = function () { throw new Error('unsupported'); }; | ||
var Uri = vscode_uri_1.default; | ||
var CompletionItem = /** @class */ (function () { | ||
function CompletionItem(label, kind) { | ||
const unsupported = () => { throw new Error('unsupported'); }; | ||
const Uri = vscode_uri_1.default; | ||
class CompletionItem { | ||
constructor(label, kind) { | ||
this.label = label; | ||
this.kind = kind; | ||
} | ||
return CompletionItem; | ||
}()); | ||
var CodeLens = /** @class */ (function () { | ||
function CodeLens(range, command) { | ||
} | ||
class CodeLens { | ||
constructor(range, command) { | ||
this.range = range; | ||
this.command = command; | ||
} | ||
Object.defineProperty(CodeLens.prototype, "isResolved", { | ||
get: function () { | ||
return !!this.command; | ||
}, | ||
enumerable: true, | ||
configurable: true | ||
}); | ||
return CodeLens; | ||
}()); | ||
var DocumentLink = /** @class */ (function () { | ||
function DocumentLink(range, target) { | ||
get isResolved() { | ||
return !!this.command; | ||
} | ||
} | ||
class DocumentLink { | ||
constructor(range, target) { | ||
this.range = range; | ||
this.target = target; | ||
} | ||
return DocumentLink; | ||
}()); | ||
var CodeActionKind = /** @class */ (function () { | ||
function CodeActionKind(value) { | ||
} | ||
class CodeActionKind { | ||
constructor(value) { | ||
this.value = value; | ||
this.append = unsupported; | ||
this.contains = unsupported; | ||
this.intersects = unsupported; | ||
} | ||
CodeActionKind.Empty = new CodeActionKind(); | ||
CodeActionKind.QuickFix = new CodeActionKind('quickfix'); | ||
CodeActionKind.Refactor = new CodeActionKind('refactor'); | ||
CodeActionKind.RefactorExtract = new CodeActionKind('refactor.extract'); | ||
CodeActionKind.RefactorInline = new CodeActionKind('refactor.inline'); | ||
CodeActionKind.RefactorRewrite = new CodeActionKind('refactor.rewrite'); | ||
CodeActionKind.Source = new CodeActionKind('source'); | ||
CodeActionKind.SourceOrganizeImports = new CodeActionKind('source.organizeImports'); | ||
return CodeActionKind; | ||
}()); | ||
var workspace = { | ||
createFileSystemWatcher: function (globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents) { | ||
var services = servicesProvider(); | ||
append(parts) { | ||
return new CodeActionKind(this.value ? this.value + CodeActionKind.sep + parts : parts); | ||
} | ||
} | ||
CodeActionKind.sep = '.'; | ||
CodeActionKind.Empty = new CodeActionKind(''); | ||
CodeActionKind.QuickFix = new CodeActionKind('quickfix'); | ||
CodeActionKind.Refactor = new CodeActionKind('refactor'); | ||
CodeActionKind.RefactorExtract = CodeActionKind.Refactor.append('extract'); | ||
CodeActionKind.RefactorInline = CodeActionKind.Refactor.append('inline'); | ||
CodeActionKind.RefactorRewrite = CodeActionKind.Refactor.append('rewrite'); | ||
CodeActionKind.Source = new CodeActionKind('source'); | ||
CodeActionKind.SourceOrganizeImports = CodeActionKind.Source.append('organizeImports'); | ||
CodeActionKind.SourceFixAll = CodeActionKind.Source.append('fixAll'); | ||
const workspace = { | ||
createFileSystemWatcher(globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents) { | ||
const services = servicesProvider(); | ||
if (typeof globPattern !== 'string') { | ||
@@ -101,3 +71,3 @@ throw new Error('unsupported'); | ||
if (services.workspace.createFileSystemWatcher) { | ||
var watcher = services.workspace.createFileSystemWatcher(globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents); | ||
const watcher = services.workspace.createFileSystemWatcher(globPattern, ignoreCreateEvents, ignoreChangeEvents, ignoreDeleteEvents); | ||
return Object.assign(watcher, { | ||
@@ -116,25 +86,22 @@ ignoreCreateEvents: !!ignoreCreateEvents, | ||
onDidDelete: services_1.Event.None, | ||
dispose: function () { } | ||
dispose: () => { } | ||
}; | ||
}, | ||
applyEdit: function (edit) { return __awaiter(_this, void 0, void 0, function () { | ||
var services; | ||
return __generator(this, function (_a) { | ||
services = servicesProvider(); | ||
if (services_1.WorkspaceEdit.is(edit)) { | ||
return [2 /*return*/, services.workspace.applyEdit(edit)]; | ||
} | ||
throw new Error('unsupported'); | ||
}); | ||
}); }, | ||
getConfiguration: function (section, resource) { | ||
var workspace = servicesProvider().workspace; | ||
var configuration = workspace.configurations ? | ||
applyEdit: (edit) => __awaiter(this, void 0, void 0, function* () { | ||
const services = servicesProvider(); | ||
if (services_1.WorkspaceEdit.is(edit)) { | ||
return services.workspace.applyEdit(edit); | ||
} | ||
throw new Error('unsupported'); | ||
}), | ||
getConfiguration(section, resource) { | ||
const { workspace } = servicesProvider(); | ||
const configuration = workspace.configurations ? | ||
workspace.configurations.getConfiguration(section, resource ? resource.toString() : undefined) : | ||
undefined; | ||
var result = { | ||
get: function (section, defaultValue) { | ||
const result = { | ||
get: (section, defaultValue) => { | ||
return configuration ? configuration.get(section, defaultValue) : defaultValue; | ||
}, | ||
has: function (section) { | ||
has: (section) => { | ||
return configuration ? configuration.has(section) : false; | ||
@@ -146,7 +113,7 @@ }, | ||
return Object.assign(result, { | ||
toJSON: function () { return configuration ? configuration.toJSON() : undefined; } | ||
toJSON: () => configuration ? configuration.toJSON() : undefined | ||
}); | ||
}, | ||
get onDidChangeConfiguration() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
if (services.workspace.configurations) { | ||
@@ -158,10 +125,13 @@ return services.workspace.configurations.onDidChangeConfiguration; | ||
get workspaceFolders() { | ||
var services = servicesProvider(); | ||
var rootUri = services.workspace.rootUri; | ||
const services = servicesProvider(); | ||
if ('workspaceFolders' in services.workspace) { | ||
return services.workspace.workspaceFolders; | ||
} | ||
const rootUri = services.workspace.rootUri; | ||
if (!rootUri) { | ||
return undefined; | ||
} | ||
var uri = Uri.parse(rootUri); | ||
const uri = Uri.parse(rootUri); | ||
return [{ | ||
uri: uri, | ||
uri, | ||
index: 0, | ||
@@ -171,20 +141,23 @@ name: uri.toString() | ||
}, | ||
get onDidChangeWorkspaceFolders() { | ||
const services = servicesProvider(); | ||
return services.workspace.onDidChangeWorkspaceFolders || services_1.Event.None; | ||
}, | ||
get textDocuments() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.textDocuments; | ||
}, | ||
get onDidOpenTextDocument() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.onDidOpenTextDocument; | ||
}, | ||
get onDidCloseTextDocument() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.onDidCloseTextDocument; | ||
}, | ||
get onDidChangeTextDocument() { | ||
var services = servicesProvider(); | ||
return function (listener, thisArgs, disposables) { | ||
return services.workspace.onDidChangeTextDocument(function (_a) { | ||
var textDocument = _a.textDocument, contentChanges = _a.contentChanges; | ||
var l = listener.bind(thisArgs); | ||
const services = servicesProvider(); | ||
return (listener, thisArgs, disposables) => { | ||
return services.workspace.onDidChangeTextDocument(({ textDocument, contentChanges }) => { | ||
const l = listener.bind(thisArgs); | ||
l({ | ||
@@ -198,15 +171,14 @@ document: textDocument, | ||
get onWillSaveTextDocument() { | ||
var services = servicesProvider(); | ||
var onWillSaveTextDocument = services.workspace.onWillSaveTextDocument; | ||
const services = servicesProvider(); | ||
const onWillSaveTextDocument = services.workspace.onWillSaveTextDocument; | ||
if (!onWillSaveTextDocument) { | ||
return services_1.Event.None; | ||
} | ||
return function (listener, thisArgs, disposables) { | ||
return onWillSaveTextDocument(function (_a) { | ||
var textDocument = _a.textDocument, reason = _a.reason, waitUntil = _a.waitUntil; | ||
var l = listener.bind(thisArgs); | ||
return (listener, thisArgs, disposables) => { | ||
return onWillSaveTextDocument(({ textDocument, reason, waitUntil }) => { | ||
const l = listener.bind(thisArgs); | ||
l({ | ||
document: textDocument, | ||
reason: reason, | ||
waitUntil: function (edits) { | ||
waitUntil: (edits) => { | ||
if (waitUntil) { | ||
@@ -221,6 +193,5 @@ waitUntil(edits); | ||
get onDidSaveTextDocument() { | ||
var services = servicesProvider(); | ||
const services = servicesProvider(); | ||
return services.workspace.onDidSaveTextDocument || services_1.Event.None; | ||
}, | ||
onDidChangeWorkspaceFolders: services_1.Event.None, | ||
getWorkspaceFolder: unsupported, | ||
@@ -238,4 +209,4 @@ asRelativePath: unsupported, | ||
}; | ||
var languages = { | ||
match: function (selector, document) { | ||
const languages = { | ||
match(selector, document) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
@@ -247,13 +218,13 @@ throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var services = servicesProvider(); | ||
var result = services.languages.match(selector, document); | ||
const services = servicesProvider(); | ||
const result = services.languages.match(selector, document); | ||
return result ? 1 : 0; | ||
}, | ||
createDiagnosticCollection: function (name) { | ||
var services = servicesProvider(); | ||
var collection = services.languages.createDiagnosticCollection ? | ||
createDiagnosticCollection(name) { | ||
const services = servicesProvider(); | ||
const collection = services.languages.createDiagnosticCollection ? | ||
services.languages.createDiagnosticCollection(name) : undefined; | ||
return { | ||
name: name || 'default', | ||
set: function (arg0, arg1) { | ||
set(arg0, arg1) { | ||
if (collection) { | ||
@@ -268,3 +239,3 @@ if (arg1) { | ||
}, | ||
dispose: function () { | ||
dispose() { | ||
if (collection) { | ||
@@ -281,38 +252,32 @@ collection.dispose(); | ||
}, | ||
registerCompletionItemProvider: function (selector, provider) { | ||
var triggerCharacters = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacters[_i - 2] = arguments[_i]; | ||
} | ||
registerCompletionItemProvider(selector, provider, ...triggerCharacters) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerCompletionItemProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
var resolveCompletionItem = provider.resolveCompletionItem; | ||
return languages.registerCompletionItemProvider.apply(languages, [selector, { | ||
provideCompletionItems: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, context = _a.context; | ||
return provider.provideCompletionItems(textDocument, position, token, context || { | ||
triggerKind: services_1.CompletionTriggerKind.Invoked | ||
}); | ||
}, | ||
resolveCompletionItem: resolveCompletionItem ? function (item, token) { | ||
return resolveCompletionItem(item, token); | ||
} : undefined | ||
}].concat(triggerCharacters)); | ||
const resolveCompletionItem = provider.resolveCompletionItem; | ||
return languages.registerCompletionItemProvider(selector, { | ||
provideCompletionItems({ textDocument, position, context }, token) { | ||
return provider.provideCompletionItems(textDocument, position, token, context || { | ||
triggerKind: services_1.CompletionTriggerKind.Invoked | ||
}); | ||
}, | ||
resolveCompletionItem: resolveCompletionItem ? (item, token) => { | ||
return resolveCompletionItem(item, token); | ||
} : undefined | ||
}, ...triggerCharacters); | ||
}, | ||
registerCodeActionsProvider: function (selector, provider) { | ||
registerCodeActionsProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerCodeActionsProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerCodeActionsProvider(selector, { | ||
provideCodeActions: function (_a, token) { | ||
var textDocument = _a.textDocument, range = _a.range, context = _a.context; | ||
provideCodeActions({ textDocument, range, context }, token) { | ||
return provider.provideCodeActions(textDocument, range, context, token); | ||
@@ -322,17 +287,16 @@ } | ||
}, | ||
registerCodeLensProvider: function (selector, provider) { | ||
registerCodeLensProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerCodeLensProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
var resolveCodeLens = provider.resolveCodeLens; | ||
const resolveCodeLens = provider.resolveCodeLens; | ||
return languages.registerCodeLensProvider(selector, { | ||
provideCodeLenses: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideCodeLenses({ textDocument }, token) { | ||
return provider.provideCodeLenses(textDocument, token); | ||
}, | ||
resolveCodeLens: resolveCodeLens ? function (codeLens, token) { | ||
resolveCodeLens: resolveCodeLens ? (codeLens, token) => { | ||
return resolveCodeLens(codeLens, token); | ||
@@ -342,13 +306,12 @@ } : undefined | ||
}, | ||
registerDefinitionProvider: function (selector, provider) { | ||
registerDefinitionProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDefinitionProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDefinitionProvider(selector, { | ||
provideDefinition: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideDefinition({ textDocument, position }, token) { | ||
return provider.provideDefinition(textDocument, position, token); | ||
@@ -358,13 +321,12 @@ } | ||
}, | ||
registerImplementationProvider: function (selector, provider) { | ||
registerImplementationProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerImplementationProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerImplementationProvider(selector, { | ||
provideImplementation: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideImplementation({ textDocument, position }, token) { | ||
return provider.provideImplementation(textDocument, position, token); | ||
@@ -374,13 +336,12 @@ } | ||
}, | ||
registerTypeDefinitionProvider: function (selector, provider) { | ||
registerTypeDefinitionProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerTypeDefinitionProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerTypeDefinitionProvider(selector, { | ||
provideTypeDefinition: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideTypeDefinition({ textDocument, position }, token) { | ||
return provider.provideTypeDefinition(textDocument, position, token); | ||
@@ -390,11 +351,24 @@ } | ||
}, | ||
registerHoverProvider: function (selector, provider) { | ||
registerDeclarationProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDeclarationProvider) { | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDeclarationProvider(selector, { | ||
provideDeclaration({ textDocument, position }, token) { | ||
return provider.provideDeclaration(textDocument, position, token); | ||
} | ||
}); | ||
}, | ||
registerHoverProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
const { languages } = servicesProvider(); | ||
if (languages.registerHoverProvider) { | ||
return languages.registerHoverProvider(selector, { | ||
provideHover: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideHover({ textDocument, position }, token) { | ||
return provider.provideHover(textDocument, position, token); | ||
@@ -404,15 +378,14 @@ } | ||
} | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
}, | ||
registerDocumentHighlightProvider: function (selector, provider) { | ||
registerDocumentHighlightProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentHighlightProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentHighlightProvider(selector, { | ||
provideDocumentHighlights: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
provideDocumentHighlights({ textDocument, position }, token) { | ||
return provider.provideDocumentHighlights(textDocument, position, token); | ||
@@ -422,13 +395,12 @@ } | ||
}, | ||
registerDocumentSymbolProvider: function (selector, provider) { | ||
registerDocumentSymbolProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentSymbolProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentSymbolProvider(selector, { | ||
provideDocumentSymbols: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideDocumentSymbols({ textDocument }, token) { | ||
return provider.provideDocumentSymbols(textDocument, token); | ||
@@ -438,10 +410,9 @@ } | ||
}, | ||
registerWorkspaceSymbolProvider: function (provider) { | ||
var languages = servicesProvider().languages; | ||
registerWorkspaceSymbolProvider(provider) { | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerWorkspaceSymbolProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerWorkspaceSymbolProvider({ | ||
provideWorkspaceSymbols: function (_a, token) { | ||
var query = _a.query; | ||
provideWorkspaceSymbols({ query }, token) { | ||
return provider.provideWorkspaceSymbols(query, token); | ||
@@ -451,13 +422,12 @@ } | ||
}, | ||
registerReferenceProvider: function (selector, provider) { | ||
registerReferenceProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerReferenceProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerReferenceProvider(selector, { | ||
provideReferences: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, context = _a.context; | ||
provideReferences({ textDocument, position, context }, token) { | ||
return provider.provideReferences(textDocument, position, context, token); | ||
@@ -467,13 +437,12 @@ } | ||
}, | ||
registerRenameProvider: function (selector, provider) { | ||
registerRenameProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerRenameProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerRenameProvider(selector, { | ||
provideRenameEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, newName = _a.newName; | ||
provideRenameEdits({ textDocument, position, newName }, token) { | ||
return provider.provideRenameEdits(textDocument, position, newName, token); | ||
@@ -483,13 +452,12 @@ } | ||
}, | ||
registerDocumentFormattingEditProvider: function (selector, provider) { | ||
registerDocumentFormattingEditProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentFormattingEditProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentFormattingEditProvider(selector, { | ||
provideDocumentFormattingEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, options = _a.options; | ||
provideDocumentFormattingEdits({ textDocument, options }, token) { | ||
return provider.provideDocumentFormattingEdits(textDocument, options, token); | ||
@@ -499,13 +467,12 @@ } | ||
}, | ||
registerDocumentRangeFormattingEditProvider: function (selector, provider) { | ||
registerDocumentRangeFormattingEditProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentRangeFormattingEditProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerDocumentRangeFormattingEditProvider(selector, { | ||
provideDocumentRangeFormattingEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, range = _a.range, options = _a.options; | ||
provideDocumentRangeFormattingEdits({ textDocument, range, options }, token) { | ||
return provider.provideDocumentRangeFormattingEdits(textDocument, range, options, token); | ||
@@ -515,55 +482,55 @@ } | ||
}, | ||
registerOnTypeFormattingEditProvider: function (selector, provider, firstTriggerCharacter) { | ||
var moreTriggerCharacter = []; | ||
for (var _i = 3; _i < arguments.length; _i++) { | ||
moreTriggerCharacter[_i - 3] = arguments[_i]; | ||
} | ||
registerOnTypeFormattingEditProvider(selector, provider, firstTriggerCharacter, ...moreTriggerCharacter) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerOnTypeFormattingEditProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerOnTypeFormattingEditProvider.apply(languages, [selector, { | ||
provideOnTypeFormattingEdits: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position, ch = _a.ch, options = _a.options; | ||
return provider.provideOnTypeFormattingEdits(textDocument, position, ch, options, token); | ||
} | ||
}, firstTriggerCharacter].concat(moreTriggerCharacter)); | ||
return languages.registerOnTypeFormattingEditProvider(selector, { | ||
provideOnTypeFormattingEdits({ textDocument, position, ch, options }, token) { | ||
return provider.provideOnTypeFormattingEdits(textDocument, position, ch, options, token); | ||
} | ||
}, firstTriggerCharacter, ...moreTriggerCharacter); | ||
}, | ||
registerSignatureHelpProvider: function (selector, provider) { | ||
var triggerCharacter = []; | ||
for (var _i = 2; _i < arguments.length; _i++) { | ||
triggerCharacter[_i - 2] = arguments[_i]; | ||
} | ||
registerSignatureHelpProvider(selector, provider, firstItem, ...remaining) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerSignatureHelpProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerSignatureHelpProvider.apply(languages, [selector, { | ||
provideSignatureHelp: function (_a, token) { | ||
var textDocument = _a.textDocument, position = _a.position; | ||
return provider.provideSignatureHelp(textDocument, position, token); | ||
} | ||
}].concat(triggerCharacter)); | ||
let triggerCharacters; | ||
let retriggerCharacters; | ||
if (typeof firstItem === 'string') { | ||
triggerCharacters = [firstItem, ...remaining]; | ||
} | ||
else if (firstItem) { | ||
triggerCharacters = firstItem.triggerCharacters; | ||
retriggerCharacters = firstItem.retriggerCharacters; | ||
} | ||
return languages.registerSignatureHelpProvider(selector, { | ||
triggerCharacters, | ||
retriggerCharacters, | ||
provideSignatureHelp({ textDocument, position }, token, context) { | ||
return provider.provideSignatureHelp(textDocument, position, token, context); | ||
} | ||
}); | ||
}, | ||
registerDocumentLinkProvider: function (selector, provider) { | ||
registerDocumentLinkProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDocumentLinkProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
var resolveDocumentLink = provider.resolveDocumentLink; | ||
const resolveDocumentLink = provider.resolveDocumentLink; | ||
return languages.registerDocumentLinkProvider(selector, { | ||
provideDocumentLinks: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideDocumentLinks({ textDocument }, token) { | ||
return provider.provideDocumentLinks(textDocument, token); | ||
}, | ||
resolveDocumentLink: resolveDocumentLink ? function (link, token) { | ||
resolveDocumentLink: resolveDocumentLink ? (link, token) => { | ||
return resolveDocumentLink(link, token); | ||
@@ -573,17 +540,15 @@ } : undefined | ||
}, | ||
registerColorProvider: function (selector, provider) { | ||
registerColorProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerColorProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerColorProvider(selector, { | ||
provideDocumentColors: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideDocumentColors({ textDocument }, token) { | ||
return provider.provideDocumentColors(textDocument, token); | ||
}, | ||
provideColorPresentations: function (_a, token) { | ||
var textDocument = _a.textDocument, color = _a.color, range = _a.range; | ||
provideColorPresentations({ textDocument, color, range }, token) { | ||
return provider.provideColorPresentations(color, { | ||
@@ -596,13 +561,12 @@ document: textDocument, | ||
}, | ||
registerFoldingRangeProvider: function (selector, provider) { | ||
registerFoldingRangeProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
var languages = servicesProvider().languages; | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerFoldingRangeProvider) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerFoldingRangeProvider(selector, { | ||
provideFoldingRanges: function (_a, token) { | ||
var textDocument = _a.textDocument; | ||
provideFoldingRanges({ textDocument }, token) { | ||
return provider.provideFoldingRanges(textDocument, {}, token); | ||
@@ -612,3 +576,18 @@ } | ||
}, | ||
registerSelectionRangeProvider(selector, provider) { | ||
if (!services_1.isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerSelectionRangeProvider) { | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
return languages.registerSelectionRangeProvider(selector, { | ||
provideSelectionRanges({ textDocument, positions }, token) { | ||
return provider.provideSelectionRanges(textDocument, positions, token); | ||
} | ||
}); | ||
}, | ||
getLanguages: unsupported, | ||
setTextDocumentLanguage: unsupported, | ||
getDiagnostics: unsupported, | ||
@@ -622,31 +601,43 @@ setLanguageConfiguration: unsupported, | ||
} | ||
var message = arg0; | ||
const message = arg0; | ||
if (arg1 !== undefined && !Array.isArray(arg1)) { | ||
throw new Error('unexpected actions: ' + JSON.stringify(arg1)); | ||
} | ||
var actions = arg1 || []; | ||
var window = servicesProvider().window; | ||
const actions = arg1 || []; | ||
const { window } = servicesProvider(); | ||
if (!window) { | ||
return Promise.resolve(undefined); | ||
} | ||
return window.showMessage.apply(window, [type, message].concat(actions)); | ||
return window.showMessage(type, message, ...actions); | ||
} | ||
var window = { | ||
const window = { | ||
showInformationMessage: showMessage.bind(undefined, services_1.MessageType.Info), | ||
showWarningMessage: showMessage.bind(undefined, services_1.MessageType.Warning), | ||
showErrorMessage: showMessage.bind(undefined, services_1.MessageType.Error), | ||
createOutputChannel: function (name) { | ||
var window = servicesProvider().window; | ||
var createOutputChannel = window ? window.createOutputChannel : undefined; | ||
var channel = createOutputChannel ? createOutputChannel.bind(window)(name) : undefined; | ||
createOutputChannel(name) { | ||
const { window } = servicesProvider(); | ||
const createOutputChannel = window ? window.createOutputChannel : undefined; | ||
const channel = createOutputChannel ? createOutputChannel.bind(window)(name) : undefined; | ||
return { | ||
name: name, | ||
append: channel.append.bind(channel), | ||
appendLine: channel.appendLine.bind(channel), | ||
name, | ||
append: channel ? channel.append.bind(channel) : () => { }, | ||
appendLine: channel ? channel.appendLine.bind(channel) : () => { }, | ||
clear: unsupported, | ||
show: channel.show.bind(channel), | ||
show: (arg) => { | ||
if (arg !== undefined && typeof arg !== 'boolean') { | ||
throw new Error('unexpected preserveFocus argument: ' + JSON.stringify(arg, undefined, 4)); | ||
} | ||
return channel ? channel.show(arg) : () => { }; | ||
}, | ||
hide: unsupported, | ||
dispose: channel.dispose.bind(channel) | ||
dispose: channel ? channel.dispose.bind(channel) : () => { } | ||
}; | ||
}, | ||
withProgress: (options, task) => { | ||
const { window } = servicesProvider(); | ||
if (window && window.withProgress) { | ||
return window.withProgress(options, task); | ||
} | ||
return task({ report: () => { } }, new vscode.CancellationTokenSource().token); | ||
}, | ||
showTextDocument: unsupported, | ||
@@ -662,3 +653,2 @@ createTextEditorDecorationType: unsupported, | ||
withScmProgress: unsupported, | ||
withProgress: unsupported, | ||
createStatusBarItem: unsupported, | ||
@@ -681,2 +671,10 @@ createTerminal: unsupported, | ||
onDidChangeTextEditorViewColumn: unsupported, | ||
get terminals() { | ||
return unsupported(); | ||
}, | ||
get activeTerminal() { | ||
return unsupported(); | ||
}, | ||
onDidChangeActiveTerminal: unsupported, | ||
onDidOpenTerminal: unsupported, | ||
onDidCloseTerminal: unsupported, | ||
@@ -686,9 +684,12 @@ get state() { | ||
}, | ||
onDidChangeWindowState: unsupported | ||
onDidChangeWindowState: unsupported, | ||
createQuickPick: unsupported, | ||
createInputBox: unsupported, | ||
registerUriHandler: unsupported | ||
}; | ||
var commands = { | ||
registerCommand: function (command, callback, thisArg) { | ||
var commands = servicesProvider().commands; | ||
const commands = { | ||
registerCommand(command, callback, thisArg) { | ||
const { commands } = servicesProvider(); | ||
if (!commands) { | ||
return disposable_1.Disposable.create(function () { }); | ||
return disposable_1.Disposable.create(() => { }); | ||
} | ||
@@ -701,21 +702,20 @@ return commands.registerCommand(command, callback, thisArg); | ||
}; | ||
var CodeDisposable = /** @class */ (function () { | ||
function CodeDisposable(callOnDispose) { | ||
class CodeDisposable { | ||
constructor(callOnDispose) { | ||
this.callOnDispose = callOnDispose; | ||
} | ||
CodeDisposable.prototype.dispose = function () { | ||
dispose() { | ||
this.callOnDispose(); | ||
}; | ||
return CodeDisposable; | ||
}()); | ||
} | ||
} | ||
return { | ||
workspace: workspace, | ||
languages: languages, | ||
window: window, | ||
commands: commands, | ||
Uri: Uri, | ||
CompletionItem: CompletionItem, | ||
CodeLens: CodeLens, | ||
DocumentLink: DocumentLink, | ||
CodeActionKind: CodeActionKind, | ||
workspace, | ||
languages, | ||
window, | ||
commands, | ||
Uri, | ||
CompletionItem, | ||
CodeLens, | ||
DocumentLink, | ||
CodeActionKind, | ||
Disposable: CodeDisposable | ||
@@ -722,0 +722,0 @@ }; |
@@ -1,4 +0,3 @@ | ||
/// <reference path="../node_modules/vscode/vscode.d.ts" /> | ||
declare const _default: typeof import("vscode"); | ||
export = _default; | ||
//# sourceMappingURL=vscode-compatibility.d.ts.map |
@@ -6,5 +6,5 @@ "use strict"; | ||
* ------------------------------------------------------------------------------------------ */ | ||
var vscode_api_1 = require("./vscode-api"); | ||
var services_1 = require("./services"); | ||
const vscode_api_1 = require("./vscode-api"); | ||
const services_1 = require("./services"); | ||
module.exports = vscode_api_1.createVSCodeApi(services_1.Services.get); | ||
//# sourceMappingURL=vscode-compatibility.js.map |
{ | ||
"name": "monaco-languageclient", | ||
"version": "0.9.0", | ||
"description": "Monaco Language client implementation", | ||
"author": "TypeFox GmbH (http://www.typefox.io)", | ||
"license": "MIT", | ||
"engines": { | ||
"vscode": "^1.25" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/TypeFox/monaco-languageclient.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/TypeFox/monaco-languageclient/issues" | ||
}, | ||
"main": "./lib/index.js", | ||
"typings": "./lib/index", | ||
"devDependencies": { | ||
"@types/node": "^7.0.12", | ||
"monaco-editor-core": "^0.14.6", | ||
"rimraf": "^2.6.2", | ||
"typescript": "^3.0.1", | ||
"vscode": "^1.1.18" | ||
}, | ||
"dependencies": { | ||
"glob-to-regexp": "^0.3.0", | ||
"vscode-jsonrpc": "^3.6.2", | ||
"vscode-base-languageclient": "4.4.0", | ||
"vscode-uri": "^1.0.5" | ||
}, | ||
"scripts": { | ||
"prepare": "npm run update-vscode && npm run clean && npm run compile", | ||
"compile": "tsc", | ||
"watch": "tsc -w", | ||
"clean": "rimraf lib", | ||
"update-vscode": "node ./node_modules/vscode/bin/install", | ||
"prepublishOnly": "npm run dist:amd", | ||
"dist:amd": "tsc --outDir dist/amd --module amd" | ||
} | ||
"name": "monaco-languageclient", | ||
"version": "0.9.1-dev.23+f30c907", | ||
"description": "Monaco Language client implementation", | ||
"author": "TypeFox GmbH (http://www.typefox.io)", | ||
"license": "MIT", | ||
"engines": { | ||
"vscode": "^1.33.0" | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/TypeFox/monaco-languageclient.git" | ||
}, | ||
"bugs": { | ||
"url": "https://github.com/TypeFox/monaco-languageclient/issues" | ||
}, | ||
"main": "./lib/index.js", | ||
"typings": "./lib/index", | ||
"dependencies": { | ||
"glob-to-regexp": "^0.3.0", | ||
"vscode-jsonrpc": "^4.1.0-next", | ||
"vscode-languageclient": "^5.3.0-next", | ||
"vscode-uri": "^1.0.5" | ||
}, | ||
"scripts": { | ||
"prepare": "yarn run update-vscode && yarn run clean && yarn run compile", | ||
"compile": "tsc", | ||
"watch": "tsc -w", | ||
"clean": "rimraf lib", | ||
"update-vscode": "node ../node_modules/vscode/bin/install", | ||
"prepublishOnly": "yarn run dist:amd", | ||
"dist:amd": "tsc --outDir dist/amd --module amd" | ||
}, | ||
"workspaces": [ | ||
".", | ||
"workspace-a", | ||
"workspace-b" | ||
], | ||
"gitHead": "f30c907e6cc9ffe08799d40668c4e0f06332ab54" | ||
} |
@@ -1,2 +0,2 @@ | ||
# Monaco language client | ||
# Monaco Language Client | ||
[](https://gitpod.io#https://github.com/TypeFox/monaco-languageclient) | ||
@@ -8,63 +8,11 @@ [](https://github.com/TypeFox/monaco-languageclient/labels/help%20wanted) | ||
NPM module to connect Monaco editor with language servers | ||
Module to connect [Monaco editor](https://microsoft.github.io/monaco-editor/) with [language servers](https://microsoft.github.io/language-server-protocol/). | ||
- Look at [the example client](https://github.com/TypeFox/monaco-languageclient/blob/master/example/src/client.ts) to learn how to start Monaco language client. | ||
- Look at [the example express app](https://github.com/TypeFox/monaco-languageclient/blob/master/example/src/server.ts) to learn how to open a web socket with an express app and launch a language server within the current process or as an external process. | ||
- Look at [the browser example](https://github.com/TypeFox/monaco-languageclient/blob/master/examples/browser/src/client.ts) to learn how to use a language service written in JavaScript in a simple HTML page. | ||
See [here](https://github.com/TypeFox/monaco-languageclient/blob/master/README.md) for a detailed documentation. | ||
Click [here](http://typefox.io/teaching-the-language-server-protocol-to-microsofts-monaco-editor) for a detail explanation how to connect the Monaco editor to your language server. | ||
## History | ||
- [**Getting started**](#getting-started) | ||
- [Local dev env](#local-dev-env) | ||
- [Gitpod](#gitpod) | ||
- [**Examples**](#examples) | ||
- [Node.js](#nodejs) | ||
- [Browser](#browser) | ||
- [**History**](CHANGELOG.md) | ||
- [**License**](#license) | ||
For the history please see the [main repository](https://github.com/TypeFox/monaco-languageclient/blob/master/CHANGELOG.md). | ||
## Getting started | ||
### Local dev env | ||
```bash | ||
git clone https://github.com/TypeFox/monaco-languageclient.git | ||
cd monaco-languageclient | ||
npm install | ||
``` | ||
### Gitpod | ||
In order to develop and run the master branch: https://gitpod.io#https://github.com/TypeFox/monaco-languageclient. | ||
Gitpod will create a dev workspace for you with a properly configured env and checked out code, run the build and start a Node.js example. | ||
[Gitpod](https://www.gitpod.io) is a one-click online IDE for GitHub. It is based on [Theia IDE framework](http://www.theia-ide.org) and make use of Monaco and the language server protocol by means of monaco-languageclient. | ||
## Examples | ||
There are two different examples that demonstrate how the `monaco-languageclient` can be used. The Node.js example uses Express and WebSockets to enable communication between the language server process and the web application. The browser example shows how a language service written in JavaScript can be used in a Monaco Editor contained in a simple HTML page. | ||
### Node.js | ||
The example node package is located under the `monaco-languageclient/example` directory. All tasks below should be run from this directory. | ||
From CLI: | ||
- Run `npm install` and `npm run build` to install dependencies and build the example node package. | ||
- Run `npm run start` to start the express server with the language server running in the same process. | ||
- Run `npm run start:ext` to start the express server with language server running in the external process. | ||
After staring the express server go to http://localhost:3000 to open the sample page. | ||
You can as well run vscode tasks to start and debug the server in different modes. | ||
### Browser | ||
The example browser package is located under the `monaco-languageclient/examples/browser` directory. All tasks below should be run from this directory. | ||
From CLI: | ||
- Run `npm install` and `npm run build` to install dependencies and build the example HTML and JavaScript files. | ||
After the example has been built, open `monaco-languageclient/examples/browser/lib/index.html` in a browser to open the sample page. | ||
## License | ||
[MIT](https://github.com/TypeFox/monaco-languageclient/blob/master/License.txt) | ||
[MIT](https://github.com/TypeFox/monaco-languageclient/blob/master/License.txt) |
@@ -5,2 +5,3 @@ /* -------------------------------------------------------------------------------------------- | ||
* ------------------------------------------------------------------------------------------ */ | ||
import * as ls from 'vscode-languageserver-protocol'; | ||
import * as Is from 'vscode-languageserver-protocol/lib/utils/is'; | ||
@@ -121,7 +122,7 @@ import { | ||
asTriggerKind(triggerKind: monaco.languages.SuggestTriggerKind): CompletionTriggerKind { | ||
asTriggerKind(triggerKind: monaco.languages.CompletionTriggerKind): CompletionTriggerKind { | ||
switch (triggerKind) { | ||
case monaco.languages.SuggestTriggerKind.TriggerCharacter: | ||
case monaco.languages.CompletionTriggerKind.TriggerCharacter: | ||
return CompletionTriggerKind.TriggerCharacter; | ||
case monaco.languages.SuggestTriggerKind.TriggerForIncompleteCompletions: | ||
case monaco.languages.CompletionTriggerKind.TriggerForIncompleteCompletions: | ||
return CompletionTriggerKind.TriggerForIncompleteCompletions; | ||
@@ -190,11 +191,9 @@ default: | ||
let range: Range | undefined; | ||
if (source.textEdit) { | ||
text = source.textEdit.text; | ||
range = this.asRange(source.textEdit.range); | ||
} else if (typeof source.insertText === 'string') { | ||
if (source.insertTextRules !== undefined && (source.insertTextRules & monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet) === 0) { | ||
format = InsertTextFormat.Snippet; | ||
text = source.insertText; | ||
} else if (source.insertText) { | ||
format = InsertTextFormat.Snippet; | ||
text = source.insertText.value; | ||
} | ||
target.insertTextFormat = format; | ||
text = source.insertText; | ||
if (source.range) { | ||
@@ -216,3 +215,3 @@ range = this.asRange(source.range); | ||
range, | ||
newText: edit.text | ||
newText: edit.text || '' | ||
} | ||
@@ -355,3 +354,3 @@ } | ||
let result = DocumentLink.create(this.asRange(item.range)); | ||
if (item.url) { result.target = item.url; } | ||
if (item.url) { result.target = typeof item.url === 'string' ? item.url : item.url.toString(); } | ||
if (ProtocolDocumentLink.is(item) && item.data) { | ||
@@ -381,9 +380,29 @@ result.data = item.data; | ||
} | ||
const edits: monaco.languages.ResourceTextEdit[] = []; | ||
const edits: (monaco.languages.ResourceTextEdit | monaco.languages.ResourceFileEdit)[] = []; | ||
if (item.documentChanges) { | ||
for (const change of item.documentChanges) { | ||
const resource = monaco.Uri.parse(change.textDocument.uri); | ||
const version = typeof change.textDocument.version === 'number' ? change.textDocument.version : undefined; | ||
edits.push(this.asResourceEdits(resource, change.edits, version)); | ||
} | ||
item.documentChanges.forEach(change => { | ||
if (ls.CreateFile.is(change)) { | ||
edits.push(<monaco.languages.ResourceFileEdit>{ | ||
newUri: monaco.Uri.parse(change.uri), | ||
options: change.options | ||
}); | ||
} else if (ls.RenameFile.is(change)) { | ||
edits.push(<monaco.languages.ResourceFileEdit>{ | ||
oldUri: monaco.Uri.parse(change.oldUri), | ||
newUri: monaco.Uri.parse(change.newUri), | ||
options: change.options | ||
}); | ||
} else if (ls.DeleteFile.is(change)) { | ||
edits.push(<monaco.languages.ResourceFileEdit>{ | ||
oldUri: monaco.Uri.parse(change.uri), | ||
options: change.options | ||
}); | ||
} else if (ls.TextDocumentEdit.is(change)) { | ||
const resource = monaco.Uri.parse(change.textDocument.uri); | ||
const version = typeof change.textDocument.version === 'number' ? change.textDocument.version : undefined; | ||
edits.push(this.asResourceEdits(resource, change.edits, version)); | ||
} else { | ||
console.error(`Unknown workspace edit change received:\n${JSON.stringify(change, undefined, 4)}`); | ||
} | ||
}); | ||
} else if (item.changes) { | ||
@@ -414,6 +433,6 @@ for (const key of Object.keys(item.changes)) { | ||
asTextEdits(items: TextEdit[]): monaco.editor.ISingleEditOperation[]; | ||
asTextEdits(items: TextEdit[]): monaco.languages.TextEdit[]; | ||
asTextEdits(items: undefined | null): undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.editor.ISingleEditOperation[] | undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.editor.ISingleEditOperation[] | undefined { | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.languages.TextEdit[] | undefined; | ||
asTextEdits(items: TextEdit[] | undefined | null): monaco.languages.TextEdit[] | undefined { | ||
if (!items) { | ||
@@ -449,7 +468,7 @@ return undefined; | ||
asCodeActions(actions: (Command | CodeAction)[]): monaco.languages.CodeAction[] { | ||
asCodeActions(actions: (Command | CodeAction)[]): (monaco.languages.Command | monaco.languages.CodeAction)[] { | ||
return actions.map(action => this.asCodeAction(action)); | ||
} | ||
asCodeAction(item: Command | CodeAction): monaco.languages.CodeAction { | ||
asCodeAction(item: Command | CodeAction): monaco.languages.Command | monaco.languages.CodeAction { | ||
if (CodeAction.is(item)) { | ||
@@ -756,23 +775,23 @@ return { | ||
asCompletionResult(result: CompletionItem[] | CompletionList | null | undefined): monaco.languages.CompletionList { | ||
asCompletionResult(result: CompletionItem[] | CompletionList | null | undefined, defaultRange: monaco.IRange): monaco.languages.CompletionList { | ||
if (!result) { | ||
return { | ||
isIncomplete: false, | ||
items: [] | ||
incomplete: false, | ||
suggestions: [] | ||
} | ||
} | ||
if (Array.isArray(result)) { | ||
const items = result.map(item => this.asCompletionItem(item)); | ||
const suggestions = result.map(item => this.asCompletionItem(item, defaultRange)); | ||
return { | ||
isIncomplete: false, | ||
items | ||
incomplete: false, | ||
suggestions | ||
} | ||
} | ||
return { | ||
isIncomplete: result.isIncomplete, | ||
items: result.items.map(this.asCompletionItem.bind(this)) | ||
incomplete: result.isIncomplete, | ||
suggestions: result.items.map(item => this.asCompletionItem(item, defaultRange)) | ||
} | ||
} | ||
asCompletionItem(item: CompletionItem): ProtocolCompletionItem { | ||
asCompletionItem(item: CompletionItem, defaultRange: monaco.IRange): ProtocolCompletionItem { | ||
const result = <ProtocolCompletionItem>{ label: item.label }; | ||
@@ -785,7 +804,8 @@ if (item.detail) { result.detail = item.detail; } | ||
if (item.filterText) { result.filterText = item.filterText; } | ||
let insertText = this.asCompletionInsertText(item); | ||
if (insertText) { | ||
result.insertText = insertText.text; | ||
result.range = insertText.range; | ||
result.fromEdit = insertText.fromEdit; | ||
const insertText = this.asCompletionInsertText(item, defaultRange); | ||
result.insertText = insertText.insertText; | ||
result.range = insertText.range; | ||
result.fromEdit = insertText.fromEdit; | ||
if (insertText.isSnippet) { | ||
result.insertTextRules = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet; | ||
} | ||
@@ -804,4 +824,7 @@ if (Is.number(item.kind)) { | ||
if (item.deprecated === true || item.deprecated === false) { result.deprecated = item.deprecated; } | ||
// TODO if (item.preselect === true || item.preselect === false) { result.preselect = item.preselect; } | ||
if (item.preselect === true || item.preselect === false) { result.preselect = item.preselect; } | ||
if (item.data !== undefined) { result.data = item.data; } | ||
if (item.deprecated === true || item.deprecated === false) { | ||
result.deprecated = item.deprecated; | ||
} | ||
return result; | ||
@@ -818,21 +841,18 @@ } | ||
asCompletionInsertText(item: CompletionItem): { text: string | monaco.languages.SnippetString, range?: monaco.Range, fromEdit: boolean } | undefined { | ||
asCompletionInsertText(item: CompletionItem, defaultRange: monaco.IRange): { insertText: string, range: monaco.IRange, fromEdit: boolean, isSnippet: boolean } { | ||
const isSnippet = item.insertTextFormat === InsertTextFormat.Snippet; | ||
if (item.textEdit) { | ||
const range = this.asRange(item.textEdit.range)!; | ||
const range = this.asRange(item.textEdit.range); | ||
const value = item.textEdit.newText; | ||
const text = item.insertTextFormat === InsertTextFormat.Snippet ? { value } : value; | ||
return { | ||
text, range, fromEdit: true | ||
}; | ||
return { isSnippet, insertText: value, range, fromEdit: true, }; | ||
} | ||
if (item.insertText) { | ||
const value = item.insertText; | ||
const text = item.insertTextFormat === InsertTextFormat.Snippet ? { value } : value; | ||
return { text, fromEdit: false }; | ||
return { isSnippet, insertText: item.insertText, fromEdit: false, range: defaultRange }; | ||
} | ||
return undefined; | ||
return { insertText: item.label, range: defaultRange, fromEdit: false, isSnippet: false }; | ||
} | ||
asDocumentLinks(documentLinks: DocumentLink[]): ProtocolDocumentLink[] { | ||
return documentLinks.map(link => this.asDocumentLink(link)); | ||
asDocumentLinks(documentLinks: DocumentLink[]): monaco.languages.ILinksList { | ||
const links = documentLinks.map(link => this.asDocumentLink(link)); | ||
return { links }; | ||
} | ||
@@ -839,0 +859,0 @@ |
@@ -82,3 +82,3 @@ /* -------------------------------------------------------------------------------------------- | ||
const model = monaco.editor.getModel(this.uri); | ||
this.doUpdateModelMarkers(model); | ||
this.doUpdateModelMarkers(model ? model : undefined); | ||
} | ||
@@ -85,0 +85,0 @@ |
@@ -6,14 +6,17 @@ /* -------------------------------------------------------------------------------------------- | ||
import { | ||
BaseLanguageClient, MessageTransports, LanguageClientOptions, CompletionParams, WillSaveTextDocumentParams, | ||
} from "vscode-base-languageclient/lib/client"; | ||
import { TypeDefinitionFeature } from "vscode-base-languageclient/lib/typeDefinition"; | ||
import { ImplementationFeature } from "vscode-base-languageclient/lib/implementation"; | ||
import { ColorProviderFeature } from "vscode-base-languageclient/lib/colorProvider"; | ||
import { WorkspaceFoldersFeature } from "vscode-base-languageclient/lib/workspaceFolders"; | ||
import { FoldingRangeFeature } from "vscode-base-languageclient/lib/foldingRange"; | ||
import * as p2c from 'vscode-base-languageclient/lib/protocolConverter'; | ||
import * as c2p from 'vscode-base-languageclient/lib/codeConverter'; | ||
BaseLanguageClient, MessageTransports, LanguageClientOptions, | ||
CompletionParams, WillSaveTextDocumentParams, StaticFeature, DynamicFeature | ||
} from "vscode-languageclient/lib/client"; | ||
import { TypeDefinitionFeature } from "vscode-languageclient/lib/typeDefinition"; | ||
import { ConfigurationFeature as PullConfigurationFeature } from "vscode-languageclient/lib/configuration"; | ||
import { ImplementationFeature } from "vscode-languageclient/lib/implementation"; | ||
import { ColorProviderFeature } from "vscode-languageclient/lib/colorProvider"; | ||
import { WorkspaceFoldersFeature } from "vscode-languageclient/lib/workspaceFolders"; | ||
import { FoldingRangeFeature } from "vscode-languageclient/lib/foldingRange"; | ||
import * as p2c from 'vscode-languageclient/lib/protocolConverter'; | ||
import * as c2p from 'vscode-languageclient/lib/codeConverter'; | ||
import { IConnectionProvider, IConnection } from './connection'; | ||
import { DeclarationFeature } from "vscode-languageclient/lib/declaration"; | ||
export * from 'vscode-base-languageclient/lib/client'; | ||
export * from 'vscode-languageclient/lib/client'; | ||
@@ -86,2 +89,3 @@ export class MonacoLanguageClient extends BaseLanguageClient { | ||
super.registerBuiltinFeatures(); | ||
this.registerFeature(new PullConfigurationFeature(this)); | ||
this.registerFeature(new TypeDefinitionFeature(this)); | ||
@@ -91,6 +95,15 @@ this.registerFeature(new ImplementationFeature(this)); | ||
this.registerFeature(new WorkspaceFoldersFeature(this)); | ||
const foldingRangeFeature = new FoldingRangeFeature(this); | ||
foldingRangeFeature['asFoldingRanges'] = MonacoLanguageClient.bypassConversion; | ||
this.registerFeature(foldingRangeFeature); | ||
this.registerFeature(new DeclarationFeature(this)); | ||
const features = this['_features'] as ((StaticFeature | DynamicFeature<any>)[]); | ||
for (const feature of features) { | ||
if (feature instanceof ColorProviderFeature) { | ||
feature['asColor'] = MonacoLanguageClient.bypassConversion; | ||
feature['asColorInformations'] = MonacoLanguageClient.bypassConversion; | ||
feature['asColorPresentations'] = MonacoLanguageClient.bypassConversion; | ||
} | ||
} | ||
} | ||
@@ -97,0 +110,0 @@ |
@@ -9,3 +9,4 @@ /* -------------------------------------------------------------------------------------------- | ||
SignatureHelpProvider, DefinitionProvider, ReferenceProvider, DocumentHighlightProvider, | ||
DocumentSymbolProvider, CodeActionProvider, CodeLensProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, OnTypeFormattingEditProvider, RenameProvider, | ||
DocumentSymbolProvider, CodeActionProvider, CodeLensProvider, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, | ||
OnTypeFormattingEditProvider, RenameProvider, | ||
DocumentFilter, DocumentSelector, DocumentLinkProvider, ImplementationProvider, TypeDefinitionProvider, DocumentColorProvider, | ||
@@ -85,16 +86,20 @@ FoldingRangeProvider | ||
triggerCharacters, | ||
provideCompletionItems: (model, position, token, context) => { | ||
provideCompletionItems: async (model, position, context, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const wordUntil = model.getWordUntilPosition(position); | ||
const defaultRange = new monaco.Range(position.lineNumber, wordUntil.startColumn, position.lineNumber, wordUntil.endColumn); | ||
const params = this.m2p.asCompletionParams(model, position, context); | ||
return provider.provideCompletionItems(params, token).then(result => this.p2m.asCompletionResult(result)); | ||
const result = await provider.provideCompletionItems(params, token); | ||
return result && this.p2m.asCompletionResult(result, defaultRange); | ||
}, | ||
resolveCompletionItem: provider.resolveCompletionItem ? (item, token) => { | ||
resolveCompletionItem: provider.resolveCompletionItem ? async (model, position, item, token) => { | ||
const protocolItem = this.m2p.asCompletionItem(item); | ||
return provider.resolveCompletionItem!(protocolItem, token).then(resolvedItem => { | ||
const resolvedCompletionItem = this.p2m.asCompletionItem(resolvedItem); | ||
const resolvedItem = await provider.resolveCompletionItem!(protocolItem, token); | ||
if (resolvedItem) { | ||
const resolvedCompletionItem = this.p2m.asCompletionItem(resolvedItem, item.range); | ||
Object.assign(item, resolvedCompletionItem); | ||
return item; | ||
}); | ||
} | ||
return item; | ||
} : undefined | ||
@@ -117,8 +122,9 @@ }; | ||
return { | ||
provideHover: (model, position, token) => { | ||
provideHover: async (model, position, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideHover(params, token).then(hover => this.p2m.asHover(hover)); | ||
const hover = await provider.provideHover(params, token); | ||
return hover && this.p2m.asHover(hover); | ||
} | ||
@@ -140,11 +146,17 @@ } | ||
protected createSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): monaco.languages.SignatureHelpProvider { | ||
const signatureHelpTriggerCharacters = triggerCharacters; | ||
const signatureHelpTriggerCharacters = [...(provider.triggerCharacters || triggerCharacters || [])]; | ||
// TODO support regrigger characters after Monaco udpate | ||
return { | ||
signatureHelpTriggerCharacters, | ||
provideSignatureHelp: (model, position, token) => { | ||
provideSignatureHelp: async (model, position, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideSignatureHelp(params, token).then(signatureHelp => this.p2m.asSignatureHelp(signatureHelp)); | ||
const signatureHelp = await provider.provideSignatureHelp(params, token, { | ||
// TODO pass context from monaco after Monaco udpate | ||
triggerKind: 1, | ||
isRetrigger: false | ||
}); | ||
return signatureHelp && this.p2m.asSignatureHelp(signatureHelp); | ||
} | ||
@@ -167,8 +179,9 @@ } | ||
return { | ||
provideDefinition: (model, position, token) => { | ||
provideDefinition: async (model, position, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideDefinition(params, token).then(result => this.p2m.asDefinitionResult(result)); | ||
const result = await provider.provideDefinition(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
} | ||
@@ -191,8 +204,9 @@ } | ||
return { | ||
provideReferences: (model, position, context, token) => { | ||
provideReferences: async (model, position, context, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asReferenceParams(model, position, context); | ||
return provider.provideReferences(params, token).then(result => this.p2m.asReferences(result)); | ||
const result = await provider.provideReferences(params, token); | ||
return result && this.p2m.asReferences(result); | ||
} | ||
@@ -215,8 +229,9 @@ } | ||
return { | ||
provideDocumentHighlights: (model, position, token) => { | ||
provideDocumentHighlights: async (model, position, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideDocumentHighlights(params, token).then(result => this.p2m.asDocumentHighlights(result)); | ||
const result = await provider.provideDocumentHighlights(params, token); | ||
return result && this.p2m.asDocumentHighlights(result); | ||
} | ||
@@ -239,8 +254,9 @@ } | ||
return { | ||
provideDocumentSymbols: (model, token) => { | ||
provideDocumentSymbols: async (model, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asDocumentSymbolParams(model); | ||
return provider.provideDocumentSymbols(params, token).then(result => this.p2m.asDocumentSymbols(result)) | ||
const result = await provider.provideDocumentSymbols(params, token); | ||
return result && this.p2m.asDocumentSymbols(result); | ||
} | ||
@@ -263,8 +279,11 @@ } | ||
return { | ||
provideCodeActions: (model, range, context, token) => { | ||
provideCodeActions: async (model, range, context, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
// FIXME: get rid of `!` when https://github.com/microsoft/monaco-editor/issues/1560 is resolved | ||
return undefined!; | ||
} | ||
const params = this.m2p.asCodeActionParams(model, range, context); | ||
return provider.provideCodeActions(params, token).then(result => this.p2m.asCodeActions(result)); | ||
const result = await provider.provideCodeActions(params, token); | ||
// FIXME: get rid of `|| undefined!` when https://github.com/microsoft/monaco-editor/issues/1560 is resolved | ||
return result && this.p2m.asCodeActions(result) || undefined!; | ||
} | ||
@@ -287,10 +306,11 @@ } | ||
return { | ||
provideCodeLenses: (model, token) => { | ||
provideCodeLenses: async (model, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asCodeLensParams(model); | ||
return provider.provideCodeLenses(params, token).then(result => this.p2m.asCodeLenses(result)) | ||
const result = await provider.provideCodeLenses(params, token); | ||
return result && this.p2m.asCodeLenses(result); | ||
}, | ||
resolveCodeLens: provider.resolveCodeLens ? (model, codeLens, token) => { | ||
resolveCodeLens: provider.resolveCodeLens ? async (model, codeLens, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
@@ -300,8 +320,9 @@ return codeLens; | ||
const protocolCodeLens = this.m2p.asCodeLens(codeLens); | ||
return provider.resolveCodeLens!(protocolCodeLens, token).then(result => { | ||
const result = await provider.resolveCodeLens!(protocolCodeLens, token); | ||
if (result) { | ||
const resolvedCodeLens = this.p2m.asCodeLens(result); | ||
Object.assign(codeLens, resolvedCodeLens); | ||
return codeLens; | ||
}); | ||
} : ((m, codeLens, t) => codeLens) | ||
} | ||
return codeLens; | ||
} : ((_, codeLens) => codeLens) | ||
} | ||
@@ -323,8 +344,9 @@ } | ||
return { | ||
provideDocumentFormattingEdits: (model, options, token) => { | ||
provideDocumentFormattingEdits: async (model, options, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asDocumentFormattingParams(model, options); | ||
return provider.provideDocumentFormattingEdits(params, token).then(result => this.p2m.asTextEdits(result)) | ||
const result = await provider.provideDocumentFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
} | ||
@@ -347,8 +369,9 @@ } | ||
return { | ||
provideDocumentRangeFormattingEdits: (model, range, options, token) => { | ||
provideDocumentRangeFormattingEdits: async (model, range, options, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asDocumentRangeFormattingParams(model, range, options); | ||
return provider.provideDocumentRangeFormattingEdits(params, token).then(result => this.p2m.asTextEdits(result)) | ||
const result = await provider.provideDocumentRangeFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
} | ||
@@ -373,8 +396,9 @@ } | ||
autoFormatTriggerCharacters, | ||
provideOnTypeFormattingEdits: (model, position, ch, options, token) => { | ||
provideOnTypeFormattingEdits: async (model, position, ch, options, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const params = this.m2p.asDocumentOnTypeFormattingParams(model, position, ch, options); | ||
return provider.provideOnTypeFormattingEdits(params, token).then(result => this.p2m.asTextEdits(result)) | ||
const result = await provider.provideOnTypeFormattingEdits(params, token); | ||
return result && this.p2m.asTextEdits(result); | ||
} | ||
@@ -397,8 +421,9 @@ } | ||
return { | ||
provideRenameEdits: (model, position, newName, token) => { | ||
provideRenameEdits: async (model, position, newName, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asRenameParams(model, position, newName); | ||
return provider.provideRenameEdits(params, token).then(result => this.p2m.asWorkspaceEdit(result)) | ||
const result = await provider.provideRenameEdits(params, token); | ||
return result && this.p2m.asWorkspaceEdit(result); | ||
} | ||
@@ -421,11 +446,11 @@ } | ||
return { | ||
provideLinks: (model, token) => { | ||
provideLinks: async (model, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asDocumentLinkParams(model); | ||
return provider.provideDocumentLinks(params, token).then(result => this.p2m.asDocumentLinks(result)); | ||
const result = await provider.provideDocumentLinks(params, token); | ||
return result && this.p2m.asDocumentLinks(result); | ||
}, | ||
resolveLink: (link: monaco.languages.ILink, token) => { | ||
resolveLink: async (link: monaco.languages.ILink, token) => { | ||
// resolve the link if the provider supports it | ||
@@ -435,7 +460,7 @@ // and the link doesn't have a url set | ||
const documentLink = this.m2p.asDocumentLink(link); | ||
return provider.resolveDocumentLink(documentLink, token).then(result => { | ||
const result = await provider.resolveDocumentLink(documentLink, token); | ||
if (result) { | ||
const resolvedLink = this.p2m.asDocumentLink(result); | ||
Object.assign(link, resolvedLink); | ||
return link; | ||
}); | ||
} | ||
} | ||
@@ -460,8 +485,9 @@ return link; | ||
return { | ||
provideImplementation: (model, position, token) => { | ||
provideImplementation: async (model, position, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideImplementation(params, token).then(result => this.p2m.asDefinitionResult(result)); | ||
const result = await provider.provideImplementation(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
} | ||
@@ -484,8 +510,9 @@ } | ||
return { | ||
provideTypeDefinition: (model, position, token) => { | ||
provideTypeDefinition: async (model, position, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return undefined!; | ||
return undefined; | ||
} | ||
const params = this.m2p.asTextDocumentPositionParams(model, position); | ||
return provider.provideTypeDefinition(params, token).then(result => this.p2m.asDefinitionResult(result)); | ||
const result = await provider.provideTypeDefinition(params, token); | ||
return result && this.p2m.asDefinitionResult(result); | ||
} | ||
@@ -508,20 +535,22 @@ } | ||
return { | ||
provideDocumentColors: (model, token) => { | ||
provideDocumentColors: async (model, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
return provider.provideDocumentColors({ textDocument }, token).then(result => this.p2m.asColorInformations(result)); | ||
const result = await provider.provideDocumentColors({ textDocument }, token); | ||
return result && this.p2m.asColorInformations(result); | ||
}, | ||
provideColorPresentations: (model, info, token) => { | ||
provideColorPresentations: async (model, info, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
const range = this.m2p.asRange(info.range); | ||
return provider.provideColorPresentations({ | ||
const result = await provider.provideColorPresentations({ | ||
textDocument, | ||
color: info.color, | ||
range | ||
}, token).then(result => this.p2m.asColorPresentations(result)) | ||
}, token); | ||
return result && this.p2m.asColorPresentations(result); | ||
} | ||
@@ -544,10 +573,11 @@ } | ||
return { | ||
provideFoldingRanges: (model, context, token) => { | ||
provideFoldingRanges: async (model, context, token) => { | ||
if (!this.matchModel(selector, MonacoModelIdentifier.fromModel(model))) { | ||
return []; | ||
return undefined; | ||
} | ||
const textDocument = this.m2p.asTextDocumentIdentifier(model); | ||
return provider.provideFoldingRanges({ | ||
const result = await provider.provideFoldingRanges({ | ||
textDocument | ||
}, token).then(result => this.p2m.asFoldingRanges(result)); | ||
}, token); | ||
return result && this.p2m.asFoldingRanges(result); | ||
} | ||
@@ -554,0 +584,0 @@ } |
@@ -91,9 +91,9 @@ /* -------------------------------------------------------------------------------------------- | ||
// Collect all referenced models | ||
const models: {[uri: string]: monaco.editor.IModel} = edit.edits.reduce( | ||
(acc: {[uri: string]: monaco.editor.IModel}, currentEdit) => { | ||
const models: { [uri: string]: monaco.editor.IModel } = edit.edits ? edit.edits.reduce( | ||
(acc: { [uri: string]: monaco.editor.IModel }, currentEdit) => { | ||
const textEdit = currentEdit as monaco.languages.ResourceTextEdit; | ||
acc[textEdit.resource.toString()] = monaco.editor.getModel(textEdit.resource); | ||
acc[textEdit.resource.toString()] = monaco.editor.getModel(textEdit.resource) as monaco.editor.ITextModel; | ||
return acc; | ||
}, {} | ||
); | ||
) : {}; | ||
@@ -106,4 +106,4 @@ // If any of the models do not exist, refuse to apply the edit. | ||
// Group edits by resource so we can batch them when applying | ||
const editsByResource: {[uri: string]: IIdentifiedSingleEditOperation[]} = edit.edits.reduce( | ||
(acc: {[uri: string]: IIdentifiedSingleEditOperation[]}, currentEdit) => { | ||
const editsByResource: { [uri: string]: IIdentifiedSingleEditOperation[] } = edit.edits ? edit.edits.reduce( | ||
(acc: { [uri: string]: IIdentifiedSingleEditOperation[] }, currentEdit) => { | ||
const textEdit = currentEdit as monaco.languages.ResourceTextEdit; | ||
@@ -116,4 +116,4 @@ const uri = textEdit.resource.toString(); | ||
return { | ||
range: monaco.Range.lift(edit.range), | ||
text: edit.text | ||
range: monaco.Range.lift(edit.range as monaco.IRange), | ||
text: edit.text as string, | ||
} | ||
@@ -124,3 +124,3 @@ }); | ||
}, {} | ||
); | ||
) : {}; | ||
@@ -133,3 +133,3 @@ // Apply edits for each resource | ||
return { | ||
identifier: {major: 1, minor: 0}, | ||
identifier: { major: 1, minor: 0 }, | ||
range: resourceEdit.range, | ||
@@ -136,0 +136,0 @@ text: resourceEdit.text, |
@@ -17,4 +17,5 @@ /* -------------------------------------------------------------------------------------------- | ||
ColorInformation, ColorPresentation, DocumentColorParams, ColorPresentationParams, | ||
FoldingRange, FoldingRangeRequestParam, DocumentFilter, DocumentSymbol, CodeAction | ||
} from 'vscode-languageserver-protocol/lib/main'; | ||
FoldingRange, FoldingRangeRequestParam, DocumentFilter, DocumentSymbol, CodeAction, | ||
Declaration, SelectionRangeParams, SelectionRange | ||
} from 'vscode-languageserver-protocol'; | ||
@@ -51,3 +52,3 @@ import { | ||
if (global[symbol]) { | ||
console.error(new Error('Language Client services has been overriden')); | ||
console.error(new Error('Language Client services has been overridden')); | ||
} | ||
@@ -69,63 +70,80 @@ global[symbol] = services; | ||
export type ProviderResult<T> = T | undefined | null | PromiseLike<T | undefined | null>; | ||
export interface CompletionItemProvider { | ||
provideCompletionItems(params: CompletionParams, token: CancellationToken): Thenable<CompletionItem[] | CompletionList>; | ||
resolveCompletionItem?(item: CompletionItem, token: CancellationToken): Thenable<CompletionItem>; | ||
provideCompletionItems(params: CompletionParams, token: CancellationToken): ProviderResult<CompletionItem[] | CompletionList>; | ||
resolveCompletionItem?(item: CompletionItem, token: CancellationToken): ProviderResult<CompletionItem>; | ||
} | ||
export interface HoverProvider { | ||
provideHover(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Hover>; | ||
provideHover(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Hover>; | ||
} | ||
export enum SignatureHelpTriggerKind { | ||
Invoke = 1, | ||
TriggerCharacter = 2, | ||
ContentChange = 3 | ||
} | ||
export interface SignatureHelpContext { | ||
readonly triggerKind: SignatureHelpTriggerKind; | ||
readonly triggerCharacter?: string; | ||
readonly isRetrigger: boolean; | ||
readonly activeSignatureHelp?: SignatureHelp; | ||
} | ||
export interface SignatureHelpProvider { | ||
provideSignatureHelp(params: TextDocumentPositionParams, token: CancellationToken): Thenable<SignatureHelp>; | ||
readonly triggerCharacters?: ReadonlyArray<string>; | ||
readonly retriggerCharacters?: ReadonlyArray<string>; | ||
provideSignatureHelp(params: TextDocumentPositionParams, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>; | ||
} | ||
export interface DefinitionProvider { | ||
provideDefinition(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideDefinition(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface ReferenceProvider { | ||
provideReferences(params: ReferenceParams, token: CancellationToken): Thenable<Location[]>; | ||
provideReferences(params: ReferenceParams, token: CancellationToken): ProviderResult<Location[]>; | ||
} | ||
export interface DocumentHighlightProvider { | ||
provideDocumentHighlights(params: TextDocumentPositionParams, token: CancellationToken): Thenable<DocumentHighlight[]>; | ||
provideDocumentHighlights(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<DocumentHighlight[]>; | ||
} | ||
export interface DocumentSymbolProvider { | ||
provideDocumentSymbols(params: DocumentSymbolParams, token: CancellationToken): Thenable<SymbolInformation[] | DocumentSymbol[]>; | ||
provideDocumentSymbols(params: DocumentSymbolParams, token: CancellationToken): ProviderResult<SymbolInformation[] | DocumentSymbol[]>; | ||
} | ||
export interface WorkspaceSymbolProvider { | ||
provideWorkspaceSymbols(params: WorkspaceSymbolParams, token: CancellationToken): Thenable<SymbolInformation[]>; | ||
provideWorkspaceSymbols(params: WorkspaceSymbolParams, token: CancellationToken): ProviderResult<SymbolInformation[]>; | ||
} | ||
export interface CodeActionProvider { | ||
provideCodeActions(params: CodeActionParams, token: CancellationToken): Thenable<(Command| CodeAction)[]>; | ||
provideCodeActions(params: CodeActionParams, token: CancellationToken): ProviderResult<(Command | CodeAction)[]>; | ||
} | ||
export interface CodeLensProvider { | ||
provideCodeLenses(params: CodeLensParams, token: CancellationToken): Thenable<CodeLens[]>; | ||
resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): Thenable<CodeLens>; | ||
provideCodeLenses(params: CodeLensParams, token: CancellationToken): ProviderResult<CodeLens[]>; | ||
resolveCodeLens?(codeLens: CodeLens, token: CancellationToken): ProviderResult<CodeLens>; | ||
} | ||
export interface DocumentFormattingEditProvider { | ||
provideDocumentFormattingEdits(params: DocumentFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideDocumentFormattingEdits(params: DocumentFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface DocumentRangeFormattingEditProvider { | ||
provideDocumentRangeFormattingEdits(params: DocumentRangeFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideDocumentRangeFormattingEdits(params: DocumentRangeFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface OnTypeFormattingEditProvider { | ||
provideOnTypeFormattingEdits(params: DocumentOnTypeFormattingParams, token: CancellationToken): Thenable<TextEdit[]>; | ||
provideOnTypeFormattingEdits(params: DocumentOnTypeFormattingParams, token: CancellationToken): ProviderResult<TextEdit[]>; | ||
} | ||
export interface RenameProvider { | ||
provideRenameEdits(params: RenameParams, token: CancellationToken): Thenable<WorkspaceEdit>; | ||
provideRenameEdits(params: RenameParams, token: CancellationToken): ProviderResult<WorkspaceEdit>; | ||
} | ||
export interface DocumentLinkProvider { | ||
provideDocumentLinks(params: DocumentLinkParams, token: CancellationToken): Thenable<DocumentLink[]>; | ||
resolveDocumentLink?(link: DocumentLink, token: CancellationToken): Thenable<DocumentLink>; | ||
provideDocumentLinks(params: DocumentLinkParams, token: CancellationToken): ProviderResult<DocumentLink[]>; | ||
resolveDocumentLink?(link: DocumentLink, token: CancellationToken): ProviderResult<DocumentLink>; | ||
} | ||
@@ -144,18 +162,26 @@ | ||
export interface ImplementationProvider { | ||
provideImplementation(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideImplementation(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface TypeDefinitionProvider { | ||
provideTypeDefinition(params: TextDocumentPositionParams, token: CancellationToken): Thenable<Definition>; | ||
provideTypeDefinition(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Definition>; | ||
} | ||
export interface DeclarationProvider { | ||
provideDeclaration(params: TextDocumentPositionParams, token: CancellationToken): ProviderResult<Declaration>; | ||
} | ||
export interface DocumentColorProvider { | ||
provideDocumentColors(params: DocumentColorParams, token: CancellationToken): Thenable<ColorInformation[]>; | ||
provideColorPresentations(params: ColorPresentationParams, token: CancellationToken): Thenable<ColorPresentation[]>; | ||
provideDocumentColors(params: DocumentColorParams, token: CancellationToken): ProviderResult<ColorInformation[]>; | ||
provideColorPresentations(params: ColorPresentationParams, token: CancellationToken): ProviderResult<ColorPresentation[]>; | ||
} | ||
export interface FoldingRangeProvider { | ||
provideFoldingRanges(params: FoldingRangeRequestParam, token: CancellationToken): Thenable<FoldingRange[]>; | ||
provideFoldingRanges(params: FoldingRangeRequestParam, token: CancellationToken): ProviderResult<FoldingRange[]>; | ||
} | ||
export interface SelectionRangeProvider { | ||
provideSelectionRanges(params: SelectionRangeParams, token: CancellationToken): ProviderResult<SelectionRange[]>; | ||
} | ||
export interface Languages { | ||
@@ -166,3 +192,3 @@ match(selector: DocumentSelector, document: DocumentIdentifier): boolean; | ||
registerHoverProvider?(selector: DocumentSelector, provider: HoverProvider): Disposable; | ||
registerSignatureHelpProvider?(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable; | ||
registerSignatureHelpProvider?(selector: DocumentSelector, provider: SignatureHelpProvider): Disposable; | ||
registerDefinitionProvider?(selector: DocumentSelector, provider: DefinitionProvider): Disposable; | ||
@@ -182,4 +208,6 @@ registerReferenceProvider?(selector: DocumentSelector, provider: ReferenceProvider): Disposable; | ||
registerTypeDefinitionProvider?(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable; | ||
registerDeclarationProvider?(selector: DocumentSelector, provider: DeclarationProvider): Disposable; | ||
registerColorProvider?(selector: DocumentSelector, provider: DocumentColorProvider): Disposable; | ||
registerFoldingRangeProvider?(selector: DocumentSelector, provider: FoldingRangeProvider): Disposable; | ||
registerSelectionRangeProvider?(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable; | ||
} | ||
@@ -195,3 +223,3 @@ | ||
readonly reason: TextDocumentSaveReason; | ||
waitUntil?(thenable: Thenable<TextEdit[]>): void; | ||
waitUntil?(PromiseLike: PromiseLike<TextEdit[]>): void; | ||
} | ||
@@ -231,2 +259,4 @@ | ||
readonly rootUri: string | null; | ||
readonly workspaceFolders?: typeof import('vscode').workspace.workspaceFolders; | ||
readonly onDidChangeWorkspaceFolders?: typeof import('vscode').workspace.onDidChangeWorkspaceFolders | ||
readonly textDocuments: TextDocument[]; | ||
@@ -239,3 +269,3 @@ readonly onDidOpenTextDocument: Event<TextDocument>; | ||
readonly onDidSaveTextDocument?: Event<TextDocument>; | ||
applyEdit(changes: WorkspaceEdit): Thenable<boolean>; | ||
applyEdit(changes: WorkspaceEdit): PromiseLike<boolean>; | ||
createFileSystemWatcher?(globPattern: string, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher; | ||
@@ -255,4 +285,5 @@ } | ||
export interface Window { | ||
showMessage<T extends MessageActionItem>(type: MessageType, message: string, ...actions: T[]): Thenable<T | undefined>; | ||
showMessage<T extends MessageActionItem>(type: MessageType, message: string, ...actions: T[]): PromiseLike<T | undefined>; | ||
createOutputChannel?(name: string): OutputChannel; | ||
withProgress?: typeof import('vscode').window.withProgress | ||
} |
@@ -21,4 +21,4 @@ /* -------------------------------------------------------------------------------------------- | ||
onWillExecuteCommand: monaco.IEvent<ICommandEvent>; | ||
executeCommand<T>(commandId: string, ...args: any[]): monaco.Promise<T>; | ||
executeCommand(commandId: string, ...args: any[]): monaco.Promise<any>; | ||
executeCommand<T>(commandId: string, ...args: any[]): Promise<T>; | ||
executeCommand(commandId: string, ...args: any[]): Promise<any>; | ||
} | ||
@@ -54,5 +54,5 @@ | ||
onWillExecuteCommand: monaco.IEvent<monaco.commands.ICommandEvent>; | ||
executeCommand<T>(commandId: string, ...args: any[]): monaco.Promise<T>; | ||
executeCommand(commandId: string, ...args: any[]): monaco.Promise<any>; | ||
executeCommand<T>(commandId: string, ...args: any[]): Promise<T>; | ||
executeCommand(commandId: string, ...args: any[]): Promise<any>; | ||
} | ||
} |
@@ -11,3 +11,3 @@ /* -------------------------------------------------------------------------------------------- | ||
Services, Event, Diagnostic, WorkspaceEdit, isDocumentSelector, | ||
MessageActionItem, MessageType, OutputChannel, CompletionTriggerKind, DocumentIdentifier | ||
MessageType, OutputChannel, CompletionTriggerKind, DocumentIdentifier | ||
} from "./services"; | ||
@@ -35,13 +35,19 @@ | ||
class CodeActionKind implements vscode.CodeActionKind { | ||
static Empty = new CodeActionKind(); | ||
private static readonly sep = '.'; | ||
static Empty = new CodeActionKind(''); | ||
static QuickFix = new CodeActionKind('quickfix'); | ||
static Refactor = new CodeActionKind('refactor'); | ||
static RefactorExtract = new CodeActionKind('refactor.extract'); | ||
static RefactorInline = new CodeActionKind('refactor.inline'); | ||
static RefactorRewrite = new CodeActionKind('refactor.rewrite'); | ||
static RefactorExtract = CodeActionKind.Refactor.append('extract'); | ||
static RefactorInline = CodeActionKind.Refactor.append('inline'); | ||
static RefactorRewrite = CodeActionKind.Refactor.append('rewrite'); | ||
static Source = new CodeActionKind('source'); | ||
static SourceOrganizeImports = new CodeActionKind('source.organizeImports'); | ||
private constructor(readonly value?: string) { } | ||
append = unsupported | ||
static SourceOrganizeImports = CodeActionKind.Source.append('organizeImports'); | ||
static SourceFixAll = CodeActionKind.Source.append('fixAll'); | ||
private constructor(readonly value: string) { } | ||
public append(parts: string): CodeActionKind { | ||
return new CodeActionKind(this.value ? this.value + CodeActionKind.sep + parts : parts); | ||
} | ||
contains = unsupported | ||
intersects = unsupported | ||
} | ||
@@ -107,2 +113,5 @@ const workspace: typeof vscode.workspace = { | ||
const services = servicesProvider(); | ||
if ('workspaceFolders' in services.workspace) { | ||
return services.workspace.workspaceFolders; | ||
} | ||
const rootUri = services.workspace.rootUri; | ||
@@ -119,2 +128,6 @@ if (!rootUri) { | ||
}, | ||
get onDidChangeWorkspaceFolders(): typeof vscode.workspace.onDidChangeWorkspaceFolders { | ||
const services = servicesProvider(); | ||
return services.workspace.onDidChangeWorkspaceFolders || Event.None; | ||
}, | ||
get textDocuments(): typeof vscode.workspace.textDocuments { | ||
@@ -156,3 +169,3 @@ const services = servicesProvider(); | ||
reason: reason, | ||
waitUntil: (edits: Thenable<vscode.TextEdit[]>) => { | ||
waitUntil: (edits: PromiseLike<vscode.TextEdit[]>) => { | ||
if (waitUntil) { | ||
@@ -170,3 +183,2 @@ waitUntil(edits); | ||
}, | ||
onDidChangeWorkspaceFolders: Event.None, | ||
getWorkspaceFolder: unsupported, | ||
@@ -317,2 +329,16 @@ asRelativePath: unsupported, | ||
}, | ||
registerDeclarationProvider(selector, provider) { | ||
if (!isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerDeclarationProvider) { | ||
return Disposable.create(() => { }); | ||
} | ||
return languages.registerDeclarationProvider(selector, { | ||
provideDeclaration({ textDocument, position }, token) { | ||
return provider.provideDeclaration(<any>textDocument, <any>position, token) as any; | ||
} | ||
}) | ||
}, | ||
registerHoverProvider(selector, provider) { | ||
@@ -409,3 +435,3 @@ if (!isDocumentSelector(selector)) { | ||
provideDocumentFormattingEdits({ textDocument, options }, token) { | ||
return provider.provideDocumentFormattingEdits(<any>textDocument, options, token) as any | ||
return provider.provideDocumentFormattingEdits(<any>textDocument, <any>options, token) as any | ||
} | ||
@@ -424,3 +450,3 @@ }); | ||
provideDocumentRangeFormattingEdits({ textDocument, range, options }, token) { | ||
return provider.provideDocumentRangeFormattingEdits(<any>textDocument, <any>range, options, token) as any | ||
return provider.provideDocumentRangeFormattingEdits(<any>textDocument, <any>range, <any>options, token) as any | ||
} | ||
@@ -439,7 +465,7 @@ }); | ||
provideOnTypeFormattingEdits({ textDocument, position, ch, options }, token) { | ||
return provider.provideOnTypeFormattingEdits(<any>textDocument, <any>position, ch, options, token) as any | ||
return provider.provideOnTypeFormattingEdits(<any>textDocument, <any>position, ch, <any>options, token) as any | ||
} | ||
}, firstTriggerCharacter, ...moreTriggerCharacter); | ||
}, | ||
registerSignatureHelpProvider(selector, provider, ...triggerCharacter) { | ||
registerSignatureHelpProvider(selector: vscode.DocumentSelector, provider: vscode.SignatureHelpProvider, firstItem?: string | vscode.SignatureHelpProviderMetadata, ...remaining: string[]) { | ||
if (!isDocumentSelector(selector)) { | ||
@@ -452,7 +478,17 @@ throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
let triggerCharacters; | ||
let retriggerCharacters; | ||
if (typeof firstItem === 'string') { | ||
triggerCharacters = [firstItem, ...remaining]; | ||
} else if (firstItem) { | ||
triggerCharacters = firstItem.triggerCharacters; | ||
retriggerCharacters = firstItem.retriggerCharacters; | ||
} | ||
return languages.registerSignatureHelpProvider(selector, { | ||
provideSignatureHelp({ textDocument, position }, token) { | ||
return provider.provideSignatureHelp(<any>textDocument, <any>position, token) as any | ||
triggerCharacters, | ||
retriggerCharacters, | ||
provideSignatureHelp({ textDocument, position }, token, context) { | ||
return provider.provideSignatureHelp(<any>textDocument, <any>position, token, <any>context) as any | ||
} | ||
}, ...triggerCharacter); | ||
}); | ||
}, | ||
@@ -511,3 +547,18 @@ registerDocumentLinkProvider(selector, provider) { | ||
}, | ||
registerSelectionRangeProvider(selector, provider) { | ||
if (!isDocumentSelector(selector)) { | ||
throw new Error('unexpected selector: ' + JSON.stringify(selector)); | ||
} | ||
const { languages } = servicesProvider(); | ||
if (!languages.registerSelectionRangeProvider) { | ||
return Disposable.create(() => { }); | ||
} | ||
return languages.registerSelectionRangeProvider(selector, { | ||
provideSelectionRanges({ textDocument, positions }, token) { | ||
return provider.provideSelectionRanges(<any>textDocument, <any>positions, token) as any; | ||
} | ||
}); | ||
}, | ||
getLanguages: unsupported, | ||
setTextDocumentLanguage: unsupported, | ||
getDiagnostics: unsupported, | ||
@@ -517,11 +568,11 @@ setLanguageConfiguration: unsupported, | ||
}; | ||
function showMessage(type: MessageType, arg0: any, arg1: any): Thenable<undefined | MessageActionItem> { | ||
function showMessage(type: MessageType, arg0: any, arg1: any): Thenable<any> { | ||
if (typeof arg0 !== "string") { | ||
throw new Error('unexpected message: ' + JSON.stringify(arg0)); | ||
} | ||
const message = arg0; | ||
const message: string = arg0; | ||
if (arg1 !== undefined && !Array.isArray(arg1)) { | ||
throw new Error('unexpected actions: ' + JSON.stringify(arg1)); | ||
} | ||
const actions = arg1 || []; | ||
const actions: vscode.MessageItem[] = arg1 || []; | ||
const { window } = servicesProvider(); | ||
@@ -540,12 +591,24 @@ if (!window) { | ||
const createOutputChannel = window ? window.createOutputChannel : undefined; | ||
const channel: OutputChannel = createOutputChannel ? createOutputChannel.bind(window)(name) : undefined; | ||
const channel: OutputChannel | undefined = createOutputChannel ? createOutputChannel.bind(window)(name) : undefined; | ||
return { | ||
name, | ||
append: channel.append.bind(channel), | ||
appendLine: channel.appendLine.bind(channel), | ||
append: channel ? channel.append.bind(channel) : () => { }, | ||
appendLine: channel ? channel.appendLine.bind(channel) : () => { }, | ||
clear: unsupported, | ||
show: channel.show.bind(channel), | ||
show: (arg: any) => { | ||
if (arg !== undefined && typeof arg !== 'boolean') { | ||
throw new Error('unexpected preserveFocus argument: ' + JSON.stringify(arg, undefined, 4)); | ||
} | ||
return channel ? channel.show(arg) : () => { } | ||
}, | ||
hide: unsupported, | ||
dispose: channel.dispose.bind(channel) | ||
dispose: channel ? channel.dispose.bind(channel) : () => { } | ||
}; | ||
}, | ||
withProgress: (options, task) => { | ||
const { window } = servicesProvider(); | ||
if (window && window.withProgress) { | ||
return window.withProgress(options, task); | ||
} | ||
return task({ report: () => { } }, new vscode.CancellationTokenSource().token); | ||
}, | ||
@@ -562,3 +625,2 @@ showTextDocument: unsupported, | ||
withScmProgress: unsupported, | ||
withProgress: unsupported, | ||
createStatusBarItem: unsupported, | ||
@@ -581,2 +643,10 @@ createTerminal: unsupported, | ||
onDidChangeTextEditorViewColumn: unsupported, | ||
get terminals() { | ||
return unsupported(); | ||
}, | ||
get activeTerminal() { | ||
return unsupported(); | ||
}, | ||
onDidChangeActiveTerminal: unsupported, | ||
onDidOpenTerminal: unsupported, | ||
onDidCloseTerminal: unsupported, | ||
@@ -586,3 +656,6 @@ get state() { | ||
}, | ||
onDidChangeWindowState: unsupported | ||
onDidChangeWindowState: unsupported, | ||
createQuickPick: unsupported, | ||
createInputBox: unsupported, | ||
registerUriHandler: unsupported | ||
}; | ||
@@ -589,0 +662,0 @@ const commands: typeof vscode.commands = { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
0
-100%718380
-1.83%140
-2.1%9384
-0.06%17
-75.71%1
Infinity%+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
Updated