def completions_codeeditor(completion_plugin_all_started, qtbot_module, request, capsys, tmp_path): """CodeEditor instance with LSP services activated.""" # Create a CodeEditor instance editor = codeeditor_factory() qtbot_module.addWidget(editor) completion_plugin, capabilities = completion_plugin_all_started completion_plugin.wait_for_ms = 2000 CONF.set('completions', 'enable_code_snippets', False) completion_plugin.after_configuration_update([]) CONF.notify_section_all_observers('completions') # Redirect editor LSP requests to lsp_manager editor.sig_perform_completion_request.connect( completion_plugin.send_request) file_path = tmp_path / 'test.py' file_path.write_text('') editor.filename = str(file_path) editor.language = 'Python' completion_plugin.register_file('python', str(file_path), editor) editor.start_completion_services() editor.register_completion_capabilities(capabilities) with qtbot_module.waitSignal( editor.completions_response_signal, timeout=30000): editor.document_did_open() def teardown(): editor.completion_widget.hide() editor.tooltip_widget.hide() editor.hide() # Capture stderr and assert there are no errors sys_stream = capsys.readouterr() sys_err = sys_stream.err if PY2: sys_err = to_text_string(sys_err).encode('utf-8') assert sys_err == '' request.addfinalizer(teardown) editor.show() return editor, completion_plugin