Я разместил в этом на прошлой неделе и с тех пор добился прогресса, где я обнаружил пакеты, которые поддержка JSON VSCode поставляется через расширения:
https://github.com/vscode-langservers/vscode-json-languageserver https://github.com/Microsoft/vscode-json-languageservice
и все остальное.Я пытаюсь использовать это в приложении Electron (NodeJS).Я могу запустить процесс запуска языкового сервера и инициализировать его:
lspProcess = child_process.fork("node_modules/vscode-json-languageserver/out/jsonServerMain.js", [ "--node-ipc" ]);
function initialize() {
send("initialize", {
rootPath: process.cwd(),
processId: process.pid,
capabilities: {
textDocument: true
}
});
}
lspProcess.on('message', function (json) {
console.log(json);
});
, и я вижу, что console.log запускается и показывает, что он работает правильно.Я думаю, что я просто хочу отправить событие textDocument / didChange согласно LSP :
send('textDocument/didChange', {
textDocument: TextDocument.create('foo://bar/file.json', 'json', 0, JSON.stringify(data))
});
, где data - это объект JSON, представляющий файл.
Когда я отправляю это сообщение и другие попытки его получить, я получаю
error: {code: -32601, message: "Unhandled method textDocument/didChange"}
id: 2
jsonrpc: "2.0"
Есть идеи, что я здесь не так делаю?Моя главная цель - разрешить редактирование через приложение Electron, а затем отправить обновленный JSON на языковой сервер, чтобы выполнить проверку схемы.
РЕДАКТИРОВАТЬ: я даже вижу инициализированный необработанный метод при реализации connection.onInitialized () в jsonServerMain.js.
EDIT2: Обновление, я выяснил, где я ошибался с некоторыми из этого.initialized и textDocument / didChange являются уведомлениями, а не запросами.