def start_client(self, language): """Start an LSP client for a given language.""" # To keep track if the client was started. started = False if language in self.clients: language_client = self.clients[language] queue = self.register_queue[language] # Don't start LSP services when testing unless we demand # them. if running_under_pytest(): if not os.environ.get('SPY_TEST_USE_INTROSPECTION'): return started started = language_client['status'] == self.RUNNING # Start client heartbeat timer = QTimer(self) self.clients_hearbeat[language] = timer timer.setInterval(self.TIME_HEARTBEAT) timer.timeout.connect(lambda: self.check_heartbeat(language)) timer.start() if language_client['status'] == self.STOPPED: config = language_client['config'] # If we're trying to connect to an external server, # verify that it's listening before creating a # client for it. if config['external']: host = config['host'] port = config['port'] response = check_connection_port(host, port) if not response: if self.show_no_external_server_warning: self.report_no_external_server( host, port, language) self.set_status(language, _("down")) return False language_client['instance'] = LSPClient( parent=self, server_settings=config, folder=self.get_root_path(language), language=language) self.register_client_instance(language_client['instance']) # Register that a client was started. logger.info("Starting LSP client for {}...".format(language)) language_client['instance'].start() language_client['status'] = self.RUNNING started = True for entry in queue: language_client['instance'].register_file(*entry) self.register_queue[language] = [] return started
def start_client(self, language): """Start an LSP client for a given language.""" started = False if language in self.clients: language_client = self.clients[language] queue = self.register_queue[language] # Don't start LSP services when testing unless we demand # them. if running_under_pytest(): if not os.environ.get('SPY_TEST_USE_INTROSPECTION'): return started # Start client started = language_client['status'] == self.RUNNING if language_client['status'] == self.STOPPED: config = language_client['config'] language_client['instance'] = LSPClient( parent=self, server_settings=config, folder=self.get_root_path(language), language=language) self.register_client_instance(language_client['instance']) logger.info("Starting LSP client for {}...".format(language)) language_client['instance'].start() language_client['status'] = self.RUNNING for entry in queue: language_client.register_file(*entry) self.register_queue[language] = [] return started
def start_client(self, language): """Start an LSP client for a given language.""" started = False if language in self.clients: language_client = self.clients[language] queue = self.register_queue[language] # Don't start LSP services when testing unless we demand # them. if running_under_pytest(): if not os.environ.get('SPY_TEST_USE_INTROSPECTION'): return started # Start client started = language_client['status'] == self.RUNNING if language_client['status'] == self.STOPPED: config = language_client['config'] # If we're trying to connect to an external server, # verify that it's listening before creating a # client for it. if config['external']: host = config['host'] port = config['port'] response = check_connection_port(host, port) if not response: self.report_no_external_server(host, port, language) return False language_client['instance'] = LSPClient( parent=self, server_settings=config, folder=self.get_root_path(language), language=language) self.register_client_instance(language_client['instance']) logger.info("Starting LSP client for {}...".format(language)) language_client['instance'].start() language_client['status'] = self.RUNNING for entry in queue: language_client['instance'].register_file(*entry) self.register_queue[language] = [] return started