def _threaded_code_format(self, text_document, options, monitor: IMonitor): from robotframework_ls.impl.formatting import robot_source_format from robotframework_ls.impl.formatting import create_text_edit_from_diff from robocorp_ls_core.lsp import TextDocumentItem text_document_item = TextDocumentItem(**text_document) text = text_document_item.text if not text: completion_context = self._create_completion_context( text_document_item.uri, 0, 0, monitor ) if completion_context is None: return [] text = completion_context.doc.source if not text: return [] if options is None: options = {} tab_size = options.get("tabSize", 4) new_contents = robot_source_format(text, space_count=tab_size) if new_contents is None or new_contents == text: return [] return [x.to_dict() for x in create_text_edit_from_diff(text, new_contents)]
def test_formatting_basic(data_regression): from robotframework_ls.impl.formatting import ( robot_source_format, create_text_edit_from_diff, ) from robocode_ls_core.workspace import Document contents = u""" ***Settings*** [Documentation]Some doc ***Test Case*** Check Call 1 2""" new_contents = robot_source_format(contents) assert u"*** Settings ***" in new_contents text_edits = create_text_edit_from_diff(contents, new_contents) doc = Document("", contents) doc.apply_text_edits(text_edits) data_regression.check(doc.source, basename="test_formatting_basic_formatted_doc") data_regression.check([x.to_dict() for x in text_edits], basename="test_formatting_basic_text_edits")