def StartServer(self, request_data): with self._server_state_mutex: if self.ServerIsHealthy(): return # Ensure we cleanup all states. self._Reset() LOGGER.info('Starting clangd: %s', self._clangd_command) self._stderr_file = utils.CreateLogfile('clangd_stderr') with utils.OpenForStdHandle(self._stderr_file) as stderr: self._server_handle = utils.SafePopen(self._clangd_command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=stderr) self._connection = ( language_server_completer.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except language_server_completer.LanguageServerConnectionTimeout: LOGGER.error('clangd failed to start, or did not connect ' 'successfully') self.Shutdown() return LOGGER.info('clangd started') self.SendInitialize(request_data)
def StartServer(self, request_data): with self._server_state_mutex: LOGGER.info('Starting %s: %s', self.GetServerName(), self.GetCommandLine()) self._stderr_file = utils.CreateLogfile('{}_stderr'.format( utils.MakeSafeFileNameString(self.GetServerName()))) with utils.OpenForStdHandle(self._stderr_file) as stderr: self._server_handle = utils.SafePopen(self.GetCommandLine(), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=stderr) self._connection = (lsc.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except lsc.LanguageServerConnectionTimeout: LOGGER.error( '%s failed to start, or did not connect successfully', self.GetServerName()) self.Shutdown() return False LOGGER.info('%s started', self.GetServerName()) return True
def _StartServer(self, request_data): with self._server_state_mutex: if self._server_started: return self._server_started = True _logger.info('Starting jdt.ls Language Server...') self._project_dir = _FindProjectDir( os.path.dirname(request_data['filepath'])) self._workspace_path = _WorkspaceDirForProject( self._project_dir, self._use_clean_workspace) command = [ PATH_TO_JAVA, '-Dfile.encoding=UTF-8', '-Declipse.application=org.eclipse.jdt.ls.core.id1', '-Dosgi.bundles.defaultStartLevel=4', '-Declipse.product=org.eclipse.jdt.ls.core.product', '-Dlog.level=ALL', '-jar', self._launcher_path, '-configuration', self._launcher_config, '-data', self._workspace_path, ] _logger.debug('Starting java-server with the following command: ' '{0}'.format(' '.join(command))) self._server_stderr = utils.CreateLogfile('jdt.ls_stderr_') with utils.OpenForStdHandle(self._server_stderr) as stderr: self._server_handle = utils.SafePopen(command, stdin=PIPE, stdout=PIPE, stderr=stderr) self._connection = ( language_server_completer.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except language_server_completer.LanguageServerConnectionTimeout: _logger.error('jdt.ls failed to start, or did not connect ' 'successfully') self._StopServer() return _logger.info('jdt.ls Language Server started') self.SendInitialize(request_data)
def _StartServer(self, request_data, project_directory=None): with self._server_state_mutex: if self._server_started: return self._server_started = True _logger.info('Starting dart Language Server...') if project_directory: self._project_dir = project_directory else: self._project_dir = _FindProjectDir( os.path.dirname(request_data['filepath'])) self._workspace_path = self._project_dir command = [ PATH_TO_DART, '--force_trace_level=verbose', ] _logger.debug('Starting dart-server with the following command: ' '{0}'.format(' '.join(command))) self._server_stderr = utils.CreateLogfile('dart_stderr_') with utils.OpenForStdHandle(self._server_stderr) as stderr: self._server_handle = utils.SafePopen(command, stdin=PIPE, stdout=PIPE, stderr=stderr) self._connection = ( language_server_completer.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except language_server_completer.LanguageServerConnectionTimeout: _logger.error('dart failed to start, or did not connect ' 'successfully') self._StopServer() return _logger.info('dart Language Server started') self.SendInitialize(request_data)
def _StartServer(self, request_data): with self._server_state_mutex: if self._server_started: return self._server_started = True _logger.info('Starting Vue Language Server') command = [LANGUAGE_SERVER_HOME, '--stdio'] self._server_stderr = utils.CreateLogfile('vls_stderr_') with utils.OpenForStdHandle(self._server_stderr) as stderr: self._server_handle = utils.SafePopen(command, stdin=PIPE, stdout=PIPE, stderr=stderr) if not self._ServerIsRunning(): _logger.error('Vue Language Server failed to start') return _logger.info('Vue Language Server started') self._connection = language_server_completer.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler()) self._connection.Start() try: self._connection.AwaitServerConnection() except language_server_completer.LanguageServerConnectionTimeout: _logger.error( 'Vue Language Server failed to start, or did not connect successfully' ) self._StopServer() return self.SendInitialize(request_data)
def StartServer(self, request_data, project_directory=None): with self._server_state_mutex: if self._server_started: return # We have to get the settings before starting the server, as this call # might throw UnknownExtraConf. extra_conf_dir = self._GetSettingsFromExtraConf(request_data) self._server_started = True LOGGER.info('Starting jdt.ls Language Server...') if project_directory: self._java_project_dir = project_directory else: self._java_project_dir = _FindProjectDir( os.path.dirname(request_data['filepath'])) self._workspace_path = _WorkspaceDirForProject( self._java_project_dir, self._use_clean_workspace) command = [ PATH_TO_JAVA, '-Dfile.encoding=UTF-8', '-Declipse.application=org.eclipse.jdt.ls.core.id1', '-Dosgi.bundles.defaultStartLevel=4', '-Declipse.product=org.eclipse.jdt.ls.core.product', '-Dlog.level=ALL', '-jar', self._launcher_path, '-configuration', self._launcher_config, '-data', self._workspace_path, ] LOGGER.debug('Starting java-server with the following command: %s', command) self._server_stderr = utils.CreateLogfile('jdt.ls_stderr_') with utils.OpenForStdHandle(self._server_stderr) as stderr: self._server_handle = utils.SafePopen(command, stdin=PIPE, stdout=PIPE, stderr=stderr) self._connection = ( language_server_completer.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except language_server_completer.LanguageServerConnectionTimeout: LOGGER.error('jdt.ls failed to start, or did not connect ' 'successfully') self._StopServer() return LOGGER.info('jdt.ls Language Server started') self.SendInitialize(request_data, extra_conf_dir=extra_conf_dir)
def StartServer(self, request_data, project_directory=None, wipe_workspace=False, wipe_config=False): with self._server_state_mutex: LOGGER.info('Starting jdt.ls Language Server...') if project_directory: self._java_project_dir = project_directory else: self._java_project_dir = _FindProjectDir( os.path.dirname(request_data['filepath'])) self._workspace_path = _WorkspaceDirForProject( self._workspace_root_path, self._java_project_dir, self._use_clean_workspace) if not self._use_clean_workspace and wipe_workspace: if os.path.isdir(self._workspace_path): LOGGER.info('Wiping out workspace {0}'.format( self._workspace_path)) shutil.rmtree(self._workspace_path) self._launcher_config = _LauncherConfiguration( self._workspace_root_path, wipe_config) command = [ PATH_TO_JAVA, '-Dfile.encoding=UTF-8', '-Declipse.application=org.eclipse.jdt.ls.core.id1', '-Dosgi.bundles.defaultStartLevel=4', '-Declipse.product=org.eclipse.jdt.ls.core.product', '-Dlog.level=ALL', '-jar', self._launcher_path, '-configuration', self._launcher_config, '-data', self._workspace_path, ] LOGGER.debug('Starting java-server with the following command: %s', command) self._server_stderr = utils.CreateLogfile('jdt.ls_stderr_') with utils.OpenForStdHandle(self._server_stderr) as stderr: self._server_handle = utils.SafePopen(command, stdin=PIPE, stdout=PIPE, stderr=stderr) self._connection = ( language_server_completer.StandardIOLanguageServerConnection( self._server_handle.stdin, self._server_handle.stdout, self.GetDefaultNotificationHandler())) self._connection.Start() try: self._connection.AwaitServerConnection() except language_server_completer.LanguageServerConnectionTimeout: LOGGER.error('jdt.ls failed to start, or did not connect ' 'successfully') self.Shutdown() return False LOGGER.info('jdt.ls Language Server started') return True