def construct_editor(qtbot, *args, **kwargs): os.environ['SPY_TEST_USE_INTROSPECTION'] = 'True' app = qapplication() lsp_manager = LSPManager(parent=None) editor = CodeEditor(parent=None) kwargs['language'] = 'Python' editor.setup_editor(*args, **kwargs) wrapper = LSPEditorWrapper(None, editor, lsp_manager) lsp_manager.register_plugin_type( LSPEventTypes.DOCUMENT, wrapper.sig_initialize) with qtbot.waitSignal(wrapper.sig_initialize, timeout=30000): editor.filename = 'test.py' editor.language = 'Python' lsp_manager.start_lsp_client('python') text = ("def some_function():\n" # D100, D103: Missing docstring " \n" # W293 trailing spaces " a = 1 # a comment\n" # E261 two spaces before inline comment "\n" " a += s\n" # Undefined variable s " return a\n" ) editor.set_text(text) with qtbot.waitSignal(editor.lsp_response_signal, timeout=30000): editor.document_did_open() yield editor, lsp_manager os.environ['SPY_TEST_USE_INTROSPECTION'] = 'False' lsp_manager.closing_plugin()
def lsp_codeeditor(lsp_manager, qtbot_module, request): """CodeEditor instance with LSP services activated.""" # Create a CodeEditor instance editor = CodeEditor(parent=None) editor.setup_editor(language='Python', tab_mode=False, markers=True, close_quotes=True, close_parentheses=True, color_scheme='spyder/dark', font=QFont("Monospace", 10)) editor.resize(640, 480) qtbot_module.addWidget(editor) editor.show() # Redirect editor LSP requests to lsp_manager editor.sig_perform_lsp_request.connect(lsp_manager.send_request) editor.filename = 'test.py' editor.language = 'Python' lsp_manager.register_file('python', 'test.py', editor) server_settings = lsp_manager.main.editor.lsp_editor_settings['python'] editor.start_lsp_services(server_settings) with qtbot_module.waitSignal(editor.lsp_response_signal, timeout=30000): editor.document_did_open() def teardown(): editor.hide() editor.completion_widget.hide() request.addfinalizer(teardown) return editor, lsp_manager
def lsp_codeeditor(lsp_manager, qtbot_module, request): """CodeEditor instance with LSP services activated.""" # Create a CodeEditor instance editor = CodeEditor(parent=None) editor.setup_editor(language='Python', tab_mode=False, markers=True, color_scheme='spyder/dark', font=QFont("Monospace", 10)) editor.resize(640, 480) qtbot_module.addWidget(editor) editor.show() # Redirect editor LSP requests to lsp_manager editor.sig_perform_lsp_request.connect(lsp_manager.send_request) editor.filename = 'test.py' editor.language = 'Python' lsp_manager.register_file('python', 'test.py', editor) server_settings = lsp_manager.main.editor.lsp_editor_settings['python'] editor.start_lsp_services(server_settings) with qtbot_module.waitSignal(editor.lsp_response_signal, timeout=30000): editor.document_did_open() def teardown(): editor.hide() editor.completion_widget.hide() request.addfinalizer(teardown) return editor, lsp_manager
def lsp_codeeditor(qtbot): """CodeEditor instance with LSP services activated.""" # Activate pycodestyle and pydocstyle CONF.set('lsp-server', 'pycodestyle', True) CONF.set('lsp-server', 'pydocstyle', True) # Tell CodeEditor to use introspection os.environ['SPY_TEST_USE_INTROSPECTION'] = 'True' # Create an LSPManager instance to be able to start an LSP client lsp_manager = LSPManager(parent=None) # Create a CodeEditor instance editor = CodeEditor(parent=None) editor.setup_editor(language='Python', tab_mode=False, markers=True, color_scheme='spyder/dark', font=QFont("Monospace", 10)) editor.resize(640, 480) qtbot.addWidget(editor) editor.show() # Redirect editor LSP requests to lsp_manager editor.sig_perform_lsp_request.connect(lsp_manager.send_request) # Create wrapper lsp_wrapper = LSPWrapper(editor, lsp_manager) # Start LSP Python client with qtbot.waitSignal(lsp_wrapper.sig_lsp_services_started, timeout=30000): editor.filename = 'test.py' editor.language = 'Python' lsp_manager.start_client('python') python_client = lsp_manager.clients['python']['instance'] python_client.sig_initialize.connect(lsp_wrapper.start_lsp_services) # Send a textDocument/didOpen request to the server with qtbot.waitSignal(editor.lsp_response_signal, timeout=30000): editor.document_did_open() yield editor # Tear down operations os.environ['SPY_TEST_USE_INTROSPECTION'] = 'False' CONF.set('lsp-server', 'pycodestyle', False) CONF.set('lsp-server', 'pydocstyle', False) lsp_manager.shutdown()