Skip to content

Commit 6f08095

Browse files
Support willSave option of TextDocumentSyncOptions.
1 parent 9b5c2b9 commit 6f08095

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

core/lspserver.py

+16-13
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ def __init__(self, message_queue, project_path, server_info, server_name, enable
281281
self.workspace_symbol_provider = False
282282
self.inlay_hint_provider = False
283283
self.semantic_tokens_provider = False
284+
self.save_file_provider = False
284285

285286
self.work_done_progress_title = ""
286287

@@ -538,21 +539,22 @@ def send_did_rename_files_notification(self, old_filepath, new_filepath):
538539
})
539540

540541
def send_did_save_notification(self, filepath, buffer_name):
541-
args = {
542-
"textDocument": {
543-
"uri": path_to_uri(filepath)
544-
}
545-
}
546-
547-
# Fetch buffer whole content to LSP server if server capability 'includeText' is True.
548-
if self.save_include_text:
549-
args = merge(args, {
542+
if self.save_file_provider:
543+
args = {
550544
"textDocument": {
551-
"text": get_buffer_content(filepath, buffer_name)
545+
"uri": path_to_uri(filepath)
552546
}
553-
})
547+
}
548+
549+
# Fetch buffer whole content to LSP server if server capability 'includeText' is True.
550+
if self.save_include_text:
551+
args = merge(args, {
552+
"textDocument": {
553+
"text": get_buffer_content(filepath, buffer_name)
554+
}
555+
})
554556

555-
self.sender.send_notification("textDocument/didSave", args)
557+
self.sender.send_notification("textDocument/didSave", args)
556558

557559
def send_workspace_did_change_watched_files(self, filepath, change_type):
558560
self.sender.send_notification("workspace/didChangeWatchedFiles", {
@@ -758,7 +760,8 @@ def save_attribute_from_message(self, message):
758760
]),
759761
("save_include_text", ["result", "capabilities", "textDocumentSync", "save", "includeText"]),
760762
("text_document_sync", ["result", "capabilities", "textDocumentSync"]),
761-
("semantic_tokens_provider", ["result", "capabilities", "semanticTokensProvider"])]
763+
("semantic_tokens_provider", ["result", "capabilities", "semanticTokensProvider"]),
764+
("save_file_provider", ["result", "capabilities", "textDocumentSync", "willSave"])]
762765

763766
for attr, path in attributes_to_set:
764767
self.set_attribute_from_message(message, attr, path)

0 commit comments

Comments
 (0)