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 <david.schulz@qt.io>
This commit is contained in:
Marcus Tillmanns
2024-07-16 08:38:39 +02:00
parent cfbdd73e02
commit 9b7016f519

View File

@@ -175,8 +175,6 @@ public:
std::optional<sol::protected_function> m_startFailedCallback; std::optional<sol::protected_function> m_startFailedCallback;
QMap<QString, sol::protected_function> m_messageCallbacks; QMap<QString, sol::protected_function> m_messageCallbacks;
LuaClientSettings *m_settings{nullptr};
public: public:
static BaseSettings::StartBehavior startBehaviorFromString(const QString &str) static BaseSettings::StartBehavior startBehaviorFromString(const QString &str)
{ {
@@ -190,8 +188,6 @@ public:
throw sol::error("Unknown start behavior: " + str.toStdString()); throw sol::error("Unknown start behavior: " + str.toStdString());
} }
void setSettings(LuaClientSettings *settings) { m_settings = settings; }
LuaClientWrapper(const sol::table &options) LuaClientWrapper(const sol::table &options)
{ {
m_cmdLineCallback = addValue<CommandLine>( m_cmdLineCallback = addValue<CommandLine>(
@@ -329,7 +325,7 @@ public:
void updateMessageCallbacks() void updateMessageCallbacks()
{ {
for (Client *c : LanguageClientManager::clientsForSetting(m_settings)) { for (Client *c : LanguageClientManager::clientsForSettingId(m_settingsTypeId.toString())) {
if (!c) if (!c)
continue; continue;
for (const auto &[msg, func] : m_messageCallbacks.asKeyValueRange()) { for (const auto &[msg, func] : m_messageCallbacks.asKeyValueRange()) {
@@ -358,7 +354,7 @@ public:
if (!messageValue.isObject()) if (!messageValue.isObject())
throw sol::error("Message is not an object"); throw sol::error("Message is not an object");
const LanguageServerProtocol::JsonRpcMessage jsonrpcmessage(messageValue.toObject()); const LanguageServerProtocol::JsonRpcMessage jsonrpcmessage(messageValue.toObject());
for (Client *c : LanguageClientManager::clientsForSetting(m_settings)) { for (Client *c : LanguageClientManager::clientsForSettingId(m_settingsTypeId.toString())) {
if (c) if (c)
c->sendMessage(jsonrpcmessage); c->sendMessage(jsonrpcmessage);
} }
@@ -529,7 +525,6 @@ static void registerLuaApi()
[](const sol::table &options) -> std::shared_ptr<LuaClientWrapper> { [](const sol::table &options) -> std::shared_ptr<LuaClientWrapper> {
auto luaClient = std::make_shared<LuaClientWrapper>(options); auto luaClient = std::make_shared<LuaClientWrapper>(options);
auto client = new LuaClientSettings(luaClient); auto client = new LuaClientSettings(luaClient);
luaClient->setSettings(client);
// The order is important! // The order is important!
// First restore the settings ... // First restore the settings ...