From: shane.xb.qian Date: Wed, 9 Nov 2022 14:44:12 +0000 (+0800) Subject: fix: correct the 'didSave' check X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=13766174295792638c377e96b82ff44ea0bcebfb;p=vim-lsp.git fix: correct the 'didSave' check --- 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