// Copyright (C) 2018 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "languageclientplugin.h" #include "client.h" #include "languageclientmanager.h" #include "languageclientsettings.h" #include "languageclienttr.h" #include #include #include #include namespace LanguageClient { static LanguageClientPlugin *m_instance = nullptr; LanguageClientPlugin::LanguageClientPlugin() { m_instance = this; qRegisterMetaType(); } LanguageClientPlugin::~LanguageClientPlugin() { m_instance = nullptr; } LanguageClientPlugin *LanguageClientPlugin::instance() { return m_instance; } void LanguageClientPlugin::initialize() { using namespace Core; setupLanguageClientProjectPanel(); LanguageClientManager::init(); LanguageClientSettings::registerClientType({Constants::LANGUAGECLIENT_STDIO_SETTINGS_ID, Tr::tr("Generic StdIO Language Server"), []() { return new StdIOSettings; }}); ActionBuilder inspectAction(this, "LanguageClient.InspectLanguageClients"); inspectAction.setText(Tr::tr("Inspect Language Clients...")); inspectAction.setContainer(Core::Constants::M_TOOLS_DEBUG); inspectAction.setOnTriggered(this, &LanguageClientManager::showInspector); } void LanguageClientPlugin::extensionsInitialized() { LanguageClientSettings::init(); } ExtensionSystem::IPlugin::ShutdownFlag LanguageClientPlugin::aboutToShutdown() { LanguageClientManager::shutdown(); if (LanguageClientManager::isShutdownFinished()) return ExtensionSystem::IPlugin::SynchronousShutdown; QTC_ASSERT(LanguageClientManager::instance(), return ExtensionSystem::IPlugin::SynchronousShutdown); connect(LanguageClientManager::instance(), &LanguageClientManager::shutdownFinished, this, &ExtensionSystem::IPlugin::asynchronousShutdownFinished); return ExtensionSystem::IPlugin::AsynchronousShutdown; } } // namespace LanguageClient