]> Sergey Matveev's repositories - vim-lsp.git/commitdiff
fix: correct the 'didSave' check
authorshane.xb.qian <shane.qian@foxmail.com>
Wed, 9 Nov 2022 14:44:12 +0000 (22:44 +0800)
committershane.xb.qian <shane.qian@foxmail.com>
Wed, 9 Nov 2022 14:44:12 +0000 (22:44 +0800)
autoload/lsp/lspserver.vim

index 4e26936ab3d106722311f69b9541ac3a5749f811..4dd7fc37cd38a882c5d5de9c0a04409dcb64b5ae 100644 (file)
@@ -961,9 +961,18 @@ enddef
 def DidSaveFile(lspserver: dict<any>, 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<any>, 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