как применить изменения к текстовому документу с сервера vscode language?

как применить изменения к текстовому документу со стороны сервера языкового сервера LSP vscode extension? Может быть, мне нужно создать структуру WorkspaceEdit и отправить клиенту запрос рабочей области / applyEdit? Ищу образец кода, который я могу просмотреть.

Что я хочу сделать: в исходном событии onDidChangeContent (при открытии файла) я хочу, чтобы LSP-сервер просматривал код в открытом файле и, возможно, вставлял недостающий код.


person RockBoro    schedule 11.10.2019    source источник


Ответы (1)


Мне нужно было сделать что-то подобное ... Используя этот пост для вдохновения ... Я придумал эту глупую функцию для добавления нового текста в файл. Примечание: я вызываю это из моей функции: connection.onCompletion ()

function addSomeText(documentURI:string, position: Position) {

// Sample function for pushing next text to an open document.

const textToAdd1: string = "You're a bozo 1";
const textToAdd2: string = "You're a bozo 2";
const textToAdd3: string = "You're a bozo 3";
const insertPosition1: Position = Position.create(position.line + 1, 0);
const insertPosition2: Position = Position.create(position.line + 2, 0);
const insertPosition3: Position = Position.create(position.line + 3, 0);

let workspaceChange = new WorkspaceChange();
let textChange = workspaceChange.getTextEditChange(documentURI);
textChange.insert(insertPosition1, textToAdd1);
textChange.insert(insertPosition2, textToAdd2);
textChange.insert(insertPosition3, textToAdd3);

// pass these edits to the client to apply:
let reply = connection.workspace.applyEdit(workspaceChange.edit);
console.log (reply);}
person John Paliotta    schedule 24.07.2020