From 9b7016f519a88c00af5e6a3e69f7b6404ae8fd46 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 16 Jul 2024 08:38:39 +0200 Subject: [PATCH] LuaLanguageClient: Dont store settings pointer The settings can be deleted by the LanguageClientManager so we just use the settings id instead. Change-Id: I03f0d4184a12c69f6cd8c74705ab8e1d01b15ec6 Reviewed-by: David Schulz --- .../lualanguageclient/lualanguageclient.cpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/plugins/languageclient/lualanguageclient/lualanguageclient.cpp b/src/plugins/languageclient/lualanguageclient/lualanguageclient.cpp index 31112dc78d3..f872c8d07c2 100644 --- a/src/plugins/languageclient/lualanguageclient/lualanguageclient.cpp +++ b/src/plugins/languageclient/lualanguageclient/lualanguageclient.cpp @@ -175,8 +175,6 @@ public: std::optional m_startFailedCallback; QMap m_messageCallbacks; - LuaClientSettings *m_settings{nullptr}; - public: static BaseSettings::StartBehavior startBehaviorFromString(const QString &str) { @@ -190,8 +188,6 @@ public: throw sol::error("Unknown start behavior: " + str.toStdString()); } - void setSettings(LuaClientSettings *settings) { m_settings = settings; } - LuaClientWrapper(const sol::table &options) { m_cmdLineCallback = addValue( @@ -329,7 +325,7 @@ public: void updateMessageCallbacks() { - for (Client *c : LanguageClientManager::clientsForSetting(m_settings)) { + for (Client *c : LanguageClientManager::clientsForSettingId(m_settingsTypeId.toString())) { if (!c) continue; for (const auto &[msg, func] : m_messageCallbacks.asKeyValueRange()) { @@ -358,7 +354,7 @@ public: if (!messageValue.isObject()) throw sol::error("Message is not an object"); const LanguageServerProtocol::JsonRpcMessage jsonrpcmessage(messageValue.toObject()); - for (Client *c : LanguageClientManager::clientsForSetting(m_settings)) { + for (Client *c : LanguageClientManager::clientsForSettingId(m_settingsTypeId.toString())) { if (c) c->sendMessage(jsonrpcmessage); } @@ -529,7 +525,6 @@ static void registerLuaApi() [](const sol::table &options) -> std::shared_ptr { auto luaClient = std::make_shared(options); auto client = new LuaClientSettings(luaClient); - luaClient->setSettings(client); // The order is important! // First restore the settings ...