如何将编辑应用到来自 vscode 语言服务器的文本文档?
how to apply edits to text document from vscode language server?
如何从 LSP 语言服务器 vscode 扩展的服务器端对文本文档应用编辑?也许我必须创建一个 WorkspaceEdit 结构并向客户端发送 workspace/applyEdit 请求?正在寻找一些我可以查看的示例代码。
我想做的事情:在最初的 onDidChangeContent 事件中(当文件打开时),我希望 LSP 服务器检查打开文件中的代码并可能插入一些缺失的代码。
我需要做类似的事情...
...
我想出了这个用于向文件中添加新文本的愚蠢函数。
注意:我是从我的 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);}
如何从 LSP 语言服务器 vscode 扩展的服务器端对文本文档应用编辑?也许我必须创建一个 WorkspaceEdit 结构并向客户端发送 workspace/applyEdit 请求?正在寻找一些我可以查看的示例代码。
我想做的事情:在最初的 onDidChangeContent 事件中(当文件打开时),我希望 LSP 服务器检查打开文件中的代码并可能插入一些缺失的代码。
我需要做类似的事情...
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);}