sprotty-vscode
Version:
Glue code to integrate Sprotty diagrams in VSCode extensions (extension part)
82 lines • 3.79 kB
JavaScript
;
/********************************************************************************
* Copyright (c) 2020-2022 TypeFox and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
Object.defineProperty(exports, "__esModule", { value: true });
exports.openInTextEditor = exports.convertUri = exports.convertPosition = exports.convertRange = exports.convertTextEdit = exports.convertWorkspaceEdit = void 0;
const vscode = require("vscode");
const lsp = require("vscode-languageclient");
function convertWorkspaceEdit(workspaceEdit) {
var _a;
const result = new vscode.WorkspaceEdit();
const changes = workspaceEdit.changes;
if (changes) {
for (const uri in changes) {
const textEdits = changes[uri];
if (Array.isArray(textEdits)) {
result.set(convertUri(uri), textEdits.map(convertTextEdit));
}
}
}
(_a = workspaceEdit.documentChanges) === null || _a === void 0 ? void 0 : _a.forEach(documentChange => {
if (lsp.TextDocumentEdit.is(documentChange)) {
result.set(convertUri(documentChange.textDocument.uri), documentChange.edits.map(convertTextEdit));
}
else if (lsp.CreateFile.is(documentChange)) {
result.createFile(convertUri(documentChange.uri), documentChange.options);
}
else if (lsp.DeleteFile.is(documentChange)) {
result.deleteFile(convertUri(documentChange.uri), documentChange.options);
}
else if (lsp.RenameFile.is(documentChange)) {
result.renameFile(convertUri(documentChange.oldUri), convertUri(documentChange.newUri), documentChange.options);
}
});
return result;
}
exports.convertWorkspaceEdit = convertWorkspaceEdit;
function convertTextEdit(textEdit) {
return new vscode.TextEdit(convertRange(textEdit.range), textEdit.newText);
}
exports.convertTextEdit = convertTextEdit;
function convertRange(range) {
return new vscode.Range(convertPosition(range.start), convertPosition(range.end));
}
exports.convertRange = convertRange;
function convertPosition(position) {
return new vscode.Position(position.line, position.character);
}
exports.convertPosition = convertPosition;
function convertUri(uri) {
return vscode.Uri.parse(uri);
}
exports.convertUri = convertUri;
function openInTextEditor({ location, forceOpen }) {
const editor = vscode.window.visibleTextEditors.find(ed => ed.document.uri.toString() === location.uri);
if (editor) {
const start = convertPosition(location.range.start);
const end = convertPosition(location.range.end);
editor.selection = new vscode.Selection(start, end);
editor.revealRange(editor.selection, vscode.TextEditorRevealType.InCenter);
}
else if (forceOpen) {
vscode.window.showTextDocument(vscode.Uri.parse(location.uri), {
selection: new vscode.Range(convertPosition(location.range.start), convertPosition(location.range.end)),
viewColumn: vscode.ViewColumn.One
});
}
}
exports.openInTextEditor = openInTextEditor;
//# sourceMappingURL=lsp-utils.js.map