0

如何从 LSP 语言服务器 vscode 扩展的服务器端对文本文档进行编辑?也许我必须创建一个 WorkspaceEdit 结构并向客户端发送一个 workspace/applyEdit 请求?寻找一些我可以查看的示例代码。

我要做什么:在最初的 onDidChangeContent 事件中(打开文件时),我希望 LSP 服务器检查打开文件中的代码,并可能插入一些丢失的代码。

4

1 回答 1

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);}
于 2020-07-24T17:55:09.757 回答