Как отправить текстовое уведомление об изменении на сервер LSP? - PullRequest
0 голосов
/ 25 марта 2020

Я пишу сервер LSP и cl inet в коде VS. Я использую lsp4j для реализации сервера LSP и использую пакет npm vscode-languageclient для реализации клиента.

В клиенте я использую FileSystemProvider для получения содержимого файла, потому что мне нужна схема настройки. Ниже приведен фрагмент кода реализации FileSystemProvider :: readFile:

        if (path) {
            return fs.readFileSync(path);
        }

Как видите, я получаю данные из существующего файла напрямую. Затем я использую следующий код для открытия URI:

vscode.commands.executeCommand('vscode.open', vscode.Uri.Parse(a-customize-uri));

Конечно, поставщик файловой системы мог работать и файл мог быть открыт, но событие изменения не генерировалось, когда я изменял содержимое. Это означает, что когда я изменяю содержимое файла в редакторе, jsonRP C не связывается между клиентом и сервером.

Я могу получить событие изменения при сохранении файла (FileChangeType.Changed), но это не то, что Я хочу.

Если я не использую FileSystemProvider, просто откройте файл напрямую:

vscode.commands.executeCommand('vscode.open', vscode.Uri.file(abs-path));

Все идет хорошо, языковой клиент может правильно отправить событие изменения.

Я также пытался добавить промежуточное ПО (didOpen, didSave, didChange) в настройках клиента, но все равно не смог работать. Кроме того, когда я не использую FileSystemProvider, промежуточное программное обеспечение может вызываться правильно.

Так что я предполагаю, может ли FileSystemProvider заинтересовать событие изменения в редакторе?

Не уверен, что я опишу Мой вопрос ясно, но любой комментарий будет оценен. Спасибо!

...