From 13766174295792638c377e96b82ff44ea0bcebfb Mon Sep 17 00:00:00 2001 From: "shane.xb.qian" Date: Wed, 9 Nov 2022 22:44:12 +0800 Subject: [PATCH] fix: correct the 'didSave' check --- autoload/lsp/lspserver.vim | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/autoload/lsp/lspserver.vim b/autoload/lsp/lspserver.vim index 4e26936..4dd7fc3 100644 --- a/autoload/lsp/lspserver.vim +++ b/autoload/lsp/lspserver.vim @@ -961,9 +961,18 @@ enddef def DidSaveFile(lspserver: dict, bnr: number): void # Check whether the LSP server supports the didSave notification if !lspserver.caps->has_key('textDocumentSync') - || !lspserver.caps.textDocumentSync->has_key('save') - || (lspserver.caps.textDocumentSync.save->type() == v:t_bool + || (lspserver.caps.textDocumentSync->type() == v:t_number + && !lspserver.caps.textDocumentSync) + || (lspserver.caps.textDocumentSync->type() == v:t_dict + && lspserver.caps.textDocumentSync->has_key('save') + && lspserver.caps.textDocumentSync.save->type() == v:t_bool && !lspserver.caps.textDocumentSync.save) + || (lspserver.caps.textDocumentSync->type() == v:t_dict + && lspserver.caps.textDocumentSync->has_key('save') + && lspserver.caps.textDocumentSync.save->type() == v:t_dict + && lspserver.caps.textDocumentSync->has_key('change') + && lspserver.caps.textDocumentSync.change->type() == v:t_number + && !lspserver.caps.textDocumentSync.change) # LSP server doesn't support text document synchronization return endif @@ -971,6 +980,8 @@ def DidSaveFile(lspserver: dict, bnr: number): void # Notification: 'textDocument/didSave' # Params: DidSaveTextDocumentParams var params = {textDocument: {uri: util.LspBufnrToUri(bnr)}} + # FIXME: should concern 'params.text' on + # 'lspserver.caps.textDocumentSync.save.includeText' too? lspserver.sendNotification('textDocument/didSave', params) enddef -- 2.48.1