LanguageClient: export code action quick fixes

Change-Id: I571378580a1f56bc649662c68eb306a081c0c091
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2021-06-22 14:47:30 +02:00
parent f9083cc6ad
commit 1d39465a1b
2 changed files with 33 additions and 21 deletions

View File

@@ -39,15 +39,14 @@ using namespace TextEditor;
namespace LanguageClient { namespace LanguageClient {
class CodeActionQuickFixOperation : public QuickFixOperation CodeActionQuickFixOperation::CodeActionQuickFixOperation(const CodeAction &action, Client *client)
{
public:
CodeActionQuickFixOperation(const CodeAction &action, Client *client)
: m_action(action) : m_action(action)
, m_client(client) , m_client(client)
{ setDescription(action.title()); } {
setDescription(action.title());
}
void perform() override void CodeActionQuickFixOperation::perform()
{ {
if (!m_client) if (!m_client)
return; return;
@@ -57,11 +56,6 @@ public:
m_client->executeCommand(*command); m_client->executeCommand(*command);
} }
private:
CodeAction m_action;
QPointer<Client> m_client;
};
class CommandQuickFixOperation : public QuickFixOperation class CommandQuickFixOperation : public QuickFixOperation
{ {
public: public:

View File

@@ -25,13 +25,31 @@
#pragma once #pragma once
#include "languageclient_global.h"
#include <texteditor/codeassist/iassistprovider.h> #include <texteditor/codeassist/iassistprovider.h>
#include <texteditor/quickfix.h>
#include <languageserverprotocol/languagefeatures.h>
#include <QPointer>
namespace LanguageClient { namespace LanguageClient {
class Client; class Client;
class LanguageClientQuickFixProvider : public TextEditor::IAssistProvider class LANGUAGECLIENT_EXPORT CodeActionQuickFixOperation : public TextEditor::QuickFixOperation
{
public:
CodeActionQuickFixOperation(const LanguageServerProtocol::CodeAction &action, Client *client);
void perform() override;
private:
LanguageServerProtocol::CodeAction m_action;
QPointer<Client> m_client;
};
class LANGUAGECLIENT_EXPORT LanguageClientQuickFixProvider : public TextEditor::IAssistProvider
{ {
public: public:
explicit LanguageClientQuickFixProvider(Client *client); explicit LanguageClientQuickFixProvider(Client *client);