LSP: rename BaseClient -> Client

Since BaseClient isn't part of an inheritance hirarchie any more the
Base doesn't make sense now.

Change-Id: I69200b19a22e5a04079e5289a02234af4f56a1bd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2019-01-31 12:15:43 +01:00
parent eac1b6059c
commit 93ea656821
14 changed files with 124 additions and 124 deletions

View File

@@ -23,7 +23,7 @@
** **
****************************************************************************/ ****************************************************************************/
#include "baseclient.h" #include "client.h"
#include "languageclientinterface.h" #include "languageclientinterface.h"
#include "languageclientmanager.h" #include "languageclientmanager.h"
@@ -62,7 +62,7 @@ namespace LanguageClient {
static Q_LOGGING_CATEGORY(LOGLSPCLIENT, "qtc.languageclient.client", QtWarningMsg); static Q_LOGGING_CATEGORY(LOGLSPCLIENT, "qtc.languageclient.client", QtWarningMsg);
BaseClient::BaseClient(BaseClientInterface *clientInterface) Client::Client(BaseClientInterface *clientInterface)
: m_id(Core::Id::fromString(QUuid::createUuid().toString())) : m_id(Core::Id::fromString(QUuid::createUuid().toString()))
, m_completionProvider(this) , m_completionProvider(this)
, m_clientInterface(clientInterface) , m_clientInterface(clientInterface)
@@ -70,12 +70,12 @@ BaseClient::BaseClient(BaseClientInterface *clientInterface)
m_contentHandler.insert(JsonRpcMessageHandler::jsonRpcMimeType(), m_contentHandler.insert(JsonRpcMessageHandler::jsonRpcMimeType(),
&JsonRpcMessageHandler::parseContent); &JsonRpcMessageHandler::parseContent);
QTC_ASSERT(clientInterface, return); QTC_ASSERT(clientInterface, return);
connect(clientInterface, &BaseClientInterface::messageReceived, this, &BaseClient::handleMessage); connect(clientInterface, &BaseClientInterface::messageReceived, this, &Client::handleMessage);
connect(clientInterface, &BaseClientInterface::error, this, &BaseClient::setError); connect(clientInterface, &BaseClientInterface::error, this, &Client::setError);
connect(clientInterface, &BaseClientInterface::finished, this, &BaseClient::finished); connect(clientInterface, &BaseClientInterface::finished, this, &Client::finished);
} }
BaseClient::~BaseClient() Client::~Client()
{ {
using namespace TextEditor; using namespace TextEditor;
// FIXME: instead of replacing the completion provider in the text document store the // FIXME: instead of replacing the completion provider in the text document store the
@@ -90,7 +90,7 @@ BaseClient::~BaseClient()
} }
} }
void BaseClient::initialize() void Client::initialize()
{ {
using namespace ProjectExplorer; using namespace ProjectExplorer;
QTC_ASSERT(m_clientInterface, return); QTC_ASSERT(m_clientInterface, return);
@@ -115,7 +115,7 @@ void BaseClient::initialize()
m_state = InitializeRequested; m_state = InitializeRequested;
} }
void BaseClient::shutdown() void Client::shutdown()
{ {
QTC_ASSERT(m_state == Initialized, emit finished(); return); QTC_ASSERT(m_state == Initialized, emit finished(); return);
qCDebug(LOGLSPCLIENT) << "shutdown language server " << m_displayName; qCDebug(LOGLSPCLIENT) << "shutdown language server " << m_displayName;
@@ -127,12 +127,12 @@ void BaseClient::shutdown()
m_state = ShutdownRequested; m_state = ShutdownRequested;
} }
BaseClient::State BaseClient::state() const Client::State Client::state() const
{ {
return m_state; return m_state;
} }
void BaseClient::openDocument(Core::IDocument *document) void Client::openDocument(Core::IDocument *document)
{ {
using namespace TextEditor; using namespace TextEditor;
if (!isSupportedDocument(document)) if (!isSupportedDocument(document))
@@ -191,7 +191,7 @@ void BaseClient::openDocument(Core::IDocument *document)
requestDocumentSymbols(textDocument); requestDocumentSymbols(textDocument);
} }
void BaseClient::sendContent(const IContent &content) void Client::sendContent(const IContent &content)
{ {
QTC_ASSERT(m_clientInterface, return); QTC_ASSERT(m_clientInterface, return);
QTC_ASSERT(m_state == Initialized, return); QTC_ASSERT(m_state == Initialized, return);
@@ -202,25 +202,25 @@ void BaseClient::sendContent(const IContent &content)
m_clientInterface->sendMessage(content.toBaseMessage()); m_clientInterface->sendMessage(content.toBaseMessage());
} }
void BaseClient::sendContent(const DocumentUri &uri, const IContent &content) void Client::sendContent(const DocumentUri &uri, const IContent &content)
{ {
if (!m_openedDocument.contains(uri.toFileName())) if (!m_openedDocument.contains(uri.toFileName()))
return; return;
sendContent(content); sendContent(content);
} }
void BaseClient::cancelRequest(const MessageId &id) void Client::cancelRequest(const MessageId &id)
{ {
m_responseHandlers.remove(id); m_responseHandlers.remove(id);
sendContent(CancelRequest(CancelParameter(id))); sendContent(CancelRequest(CancelParameter(id)));
} }
void BaseClient::closeDocument(const DidCloseTextDocumentParams &params) void Client::closeDocument(const DidCloseTextDocumentParams &params)
{ {
sendContent(params.textDocument().uri(), DidCloseTextDocumentNotification(params)); sendContent(params.textDocument().uri(), DidCloseTextDocumentNotification(params));
} }
void BaseClient::documentContentsSaved(Core::IDocument *document) void Client::documentContentsSaved(Core::IDocument *document)
{ {
if (!m_openedDocument.contains(document->filePath())) if (!m_openedDocument.contains(document->filePath()))
return; return;
@@ -254,7 +254,7 @@ void BaseClient::documentContentsSaved(Core::IDocument *document)
sendContent(DidSaveTextDocumentNotification(params)); sendContent(DidSaveTextDocumentNotification(params));
} }
void BaseClient::documentWillSave(Core::IDocument *document) void Client::documentWillSave(Core::IDocument *document)
{ {
const FileName &filePath = document->filePath(); const FileName &filePath = document->filePath();
if (!m_openedDocument.contains(filePath)) if (!m_openedDocument.contains(filePath))
@@ -282,7 +282,7 @@ void BaseClient::documentWillSave(Core::IDocument *document)
sendContent(WillSaveTextDocumentNotification(params)); sendContent(WillSaveTextDocumentNotification(params));
} }
void BaseClient::documentContentsChanged(Core::IDocument *document) void Client::documentContentsChanged(Core::IDocument *document)
{ {
if (!m_openedDocument.contains(document->filePath())) if (!m_openedDocument.contains(document->filePath()))
return; return;
@@ -315,18 +315,18 @@ void BaseClient::documentContentsChanged(Core::IDocument *document)
} }
} }
void BaseClient::registerCapabilities(const QList<Registration> &registrations) void Client::registerCapabilities(const QList<Registration> &registrations)
{ {
m_dynamicCapabilities.registerCapability(registrations); m_dynamicCapabilities.registerCapability(registrations);
} }
void BaseClient::unregisterCapabilities(const QList<Unregistration> &unregistrations) void Client::unregisterCapabilities(const QList<Unregistration> &unregistrations)
{ {
m_dynamicCapabilities.unregisterCapability(unregistrations); m_dynamicCapabilities.unregisterCapability(unregistrations);
} }
template <typename Request> template <typename Request>
static bool sendTextDocumentPositionParamsRequest(BaseClient *client, static bool sendTextDocumentPositionParamsRequest(Client *client,
const Request &request, const Request &request,
const DynamicCapabilities &dynamicCapabilities, const DynamicCapabilities &dynamicCapabilities,
const optional<bool> &serverCapability) const optional<bool> &serverCapability)
@@ -350,13 +350,13 @@ static bool sendTextDocumentPositionParamsRequest(BaseClient *client,
return sendMessage; return sendMessage;
} }
bool BaseClient::findLinkAt(GotoDefinitionRequest &request) bool Client::findLinkAt(GotoDefinitionRequest &request)
{ {
return LanguageClient::sendTextDocumentPositionParamsRequest( return LanguageClient::sendTextDocumentPositionParamsRequest(
this, request, m_dynamicCapabilities, m_serverCapabilities.definitionProvider()); this, request, m_dynamicCapabilities, m_serverCapabilities.definitionProvider());
} }
bool BaseClient::findUsages(FindReferencesRequest &request) bool Client::findUsages(FindReferencesRequest &request)
{ {
return LanguageClient::sendTextDocumentPositionParamsRequest( return LanguageClient::sendTextDocumentPositionParamsRequest(
this, request, m_dynamicCapabilities, m_serverCapabilities.referencesProvider()); this, request, m_dynamicCapabilities, m_serverCapabilities.referencesProvider());
@@ -371,7 +371,7 @@ TextEditor::HighlightingResult createHighlightingResult(const SymbolInformation
info.name().length(), info.kind()); info.name().length(), info.kind());
} }
void BaseClient::requestDocumentSymbols(TextEditor::TextDocument *document) void Client::requestDocumentSymbols(TextEditor::TextDocument *document)
{ {
// TODO: Do not use this information for highlighting but the overview model // TODO: Do not use this information for highlighting but the overview model
return; return;
@@ -464,7 +464,7 @@ void BaseClient::requestDocumentSymbols(TextEditor::TextDocument *document)
sendContent(request); sendContent(request);
} }
void BaseClient::cursorPositionChanged(TextEditor::TextEditorWidget *widget) void Client::cursorPositionChanged(TextEditor::TextEditorWidget *widget)
{ {
const auto uri = DocumentUri::fromFileName(widget->textDocument()->filePath()); const auto uri = DocumentUri::fromFileName(widget->textDocument()->filePath());
if (m_dynamicCapabilities.isRegistered(DocumentHighlightsRequest::methodName).value_or(false)) { if (m_dynamicCapabilities.isRegistered(DocumentHighlightsRequest::methodName).value_or(false)) {
@@ -515,7 +515,7 @@ void BaseClient::cursorPositionChanged(TextEditor::TextEditorWidget *widget)
sendContent(request); sendContent(request);
} }
void BaseClient::requestCodeActions(const DocumentUri &uri, const QList<Diagnostic> &diagnostics) void Client::requestCodeActions(const DocumentUri &uri, const QList<Diagnostic> &diagnostics)
{ {
const Utils::FileName fileName = uri.toFileName(); const Utils::FileName fileName = uri.toFileName();
TextEditor::TextDocument *doc = textDocumentForFileName(fileName); TextEditor::TextDocument *doc = textDocumentForFileName(fileName);
@@ -548,14 +548,14 @@ void BaseClient::requestCodeActions(const DocumentUri &uri, const QList<Diagnost
codeActionParams.setRange(Range(start, end)); codeActionParams.setRange(Range(start, end));
CodeActionRequest request(codeActionParams); CodeActionRequest request(codeActionParams);
request.setResponseCallback( request.setResponseCallback(
[uri, self = QPointer<BaseClient>(this)](const CodeActionRequest::Response &response) { [uri, self = QPointer<Client>(this)](const CodeActionRequest::Response &response) {
if (self) if (self)
self->handleCodeActionResponse(response, uri); self->handleCodeActionResponse(response, uri);
}); });
sendContent(request); sendContent(request);
} }
void BaseClient::handleCodeActionResponse(const CodeActionRequest::Response &response, void Client::handleCodeActionResponse(const CodeActionRequest::Response &response,
const DocumentUri &uri) const DocumentUri &uri)
{ {
if (const Utils::optional<CodeActionRequest::Response::Error> &error = response.error()) if (const Utils::optional<CodeActionRequest::Response::Error> &error = response.error())
@@ -573,7 +573,7 @@ void BaseClient::handleCodeActionResponse(const CodeActionRequest::Response &res
} }
} }
void BaseClient::executeCommand(const Command &command) void Client::executeCommand(const Command &command)
{ {
using CommandOptions = LanguageServerProtocol::ServerCapabilities::ExecuteCommandOptions; using CommandOptions = LanguageServerProtocol::ServerCapabilities::ExecuteCommandOptions;
const QString method(ExecuteCommandRequest::methodName); const QString method(ExecuteCommandRequest::methodName);
@@ -594,7 +594,7 @@ void BaseClient::executeCommand(const Command &command)
sendContent(request); sendContent(request);
} }
void BaseClient::projectOpened(ProjectExplorer::Project *project) void Client::projectOpened(ProjectExplorer::Project *project)
{ {
if (!sendWorkspceFolderChanges()) if (!sendWorkspceFolderChanges())
return; return;
@@ -606,7 +606,7 @@ void BaseClient::projectOpened(ProjectExplorer::Project *project)
sendContent(change); sendContent(change);
} }
void BaseClient::projectClosed(ProjectExplorer::Project *project) void Client::projectClosed(ProjectExplorer::Project *project)
{ {
if (!sendWorkspceFolderChanges()) if (!sendWorkspceFolderChanges())
return; return;
@@ -618,18 +618,18 @@ void BaseClient::projectClosed(ProjectExplorer::Project *project)
sendContent(change); sendContent(change);
} }
void BaseClient::setSupportedLanguage(const LanguageFilter &filter) void Client::setSupportedLanguage(const LanguageFilter &filter)
{ {
m_languagFilter = filter; m_languagFilter = filter;
} }
bool BaseClient::isSupportedDocument(const Core::IDocument *document) const bool Client::isSupportedDocument(const Core::IDocument *document) const
{ {
QTC_ASSERT(document, return false); QTC_ASSERT(document, return false);
return isSupportedFile(document->filePath(), document->mimeType()); return isSupportedFile(document->filePath(), document->mimeType());
} }
bool BaseClient::isSupportedFile(const Utils::FileName &filePath, const QString &mimeType) const bool Client::isSupportedFile(const Utils::FileName &filePath, const QString &mimeType) const
{ {
if (m_languagFilter.mimeTypes.isEmpty() && m_languagFilter.filePattern.isEmpty()) if (m_languagFilter.mimeTypes.isEmpty() && m_languagFilter.filePattern.isEmpty())
return true; return true;
@@ -643,25 +643,25 @@ bool BaseClient::isSupportedFile(const Utils::FileName &filePath, const QString
}); });
} }
bool BaseClient::isSupportedUri(const DocumentUri &uri) const bool Client::isSupportedUri(const DocumentUri &uri) const
{ {
return isSupportedFile(uri.toFileName(), return isSupportedFile(uri.toFileName(),
Utils::mimeTypeForFile(uri.toFileName().fileName()).name()); Utils::mimeTypeForFile(uri.toFileName().fileName()).name());
} }
bool BaseClient::needsRestart(const BaseSettings *settings) const bool Client::needsRestart(const BaseSettings *settings) const
{ {
QTC_ASSERT(settings, return false); QTC_ASSERT(settings, return false);
return m_languagFilter.mimeTypes != settings->m_languageFilter.mimeTypes return m_languagFilter.mimeTypes != settings->m_languageFilter.mimeTypes
|| m_languagFilter.filePattern != settings->m_languageFilter.filePattern; || m_languagFilter.filePattern != settings->m_languageFilter.filePattern;
} }
bool BaseClient::start() bool Client::start()
{ {
return m_clientInterface->start(); return m_clientInterface->start();
} }
bool BaseClient::reset() bool Client::reset()
{ {
if (!m_restartsLeft) if (!m_restartsLeft)
return false; return false;
@@ -675,13 +675,13 @@ bool BaseClient::reset()
return true; return true;
} }
void BaseClient::setError(const QString &message) void Client::setError(const QString &message)
{ {
log(message); log(message);
m_state = Error; m_state = Error;
} }
void BaseClient::handleMessage(const BaseMessage &message) void Client::handleMessage(const BaseMessage &message)
{ {
if (auto handler = m_contentHandler[message.mimeType]) { if (auto handler = m_contentHandler[message.mimeType]) {
QString parseError; QString parseError;
@@ -699,28 +699,28 @@ void BaseClient::handleMessage(const BaseMessage &message)
} }
} }
void BaseClient::log(const QString &message, Core::MessageManager::PrintToOutputPaneFlag flag) void Client::log(const QString &message, Core::MessageManager::PrintToOutputPaneFlag flag)
{ {
Core::MessageManager::write(QString("LanguageClient %1: %2").arg(name(), message), flag); Core::MessageManager::write(QString("LanguageClient %1: %2").arg(name(), message), flag);
} }
const ServerCapabilities &BaseClient::capabilities() const const ServerCapabilities &Client::capabilities() const
{ {
return m_serverCapabilities; return m_serverCapabilities;
} }
const DynamicCapabilities &BaseClient::dynamicCapabilities() const const DynamicCapabilities &Client::dynamicCapabilities() const
{ {
return m_dynamicCapabilities; return m_dynamicCapabilities;
} }
void BaseClient::log(const ShowMessageParams &message, void Client::log(const ShowMessageParams &message,
Core::MessageManager::PrintToOutputPaneFlag flag) Core::MessageManager::PrintToOutputPaneFlag flag)
{ {
log(message.toString(), flag); log(message.toString(), flag);
} }
void BaseClient::showMessageBox(const ShowMessageRequestParams &message, const MessageId &id) void Client::showMessageBox(const ShowMessageRequestParams &message, const MessageId &id)
{ {
auto box = new QMessageBox(); auto box = new QMessageBox();
box->setText(message.toString()); box->setText(message.toString());
@@ -748,13 +748,13 @@ void BaseClient::showMessageBox(const ShowMessageRequestParams &message, const M
box->show(); box->show();
} }
void BaseClient::handleResponse(const MessageId &id, const QByteArray &content, QTextCodec *codec) void Client::handleResponse(const MessageId &id, const QByteArray &content, QTextCodec *codec)
{ {
if (auto handler = m_responseHandlers[id]) if (auto handler = m_responseHandlers[id])
handler(content, codec); handler(content, codec);
} }
void BaseClient::handleMethod(const QString &method, MessageId id, const IContent *content) void Client::handleMethod(const QString &method, MessageId id, const IContent *content)
{ {
QStringList error; QStringList error;
bool paramsValid = true; bool paramsValid = true;
@@ -822,7 +822,7 @@ void BaseClient::handleMethod(const QString &method, MessageId id, const IConten
delete content; delete content;
} }
void BaseClient::intializeCallback(const InitializeRequest::Response &initResponse) void Client::intializeCallback(const InitializeRequest::Response &initResponse)
{ {
QTC_ASSERT(m_state == InitializeRequested, return); QTC_ASSERT(m_state == InitializeRequested, return);
if (optional<ResponseError<InitializeError>> error = initResponse.error()) { if (optional<ResponseError<InitializeError>> error = initResponse.error()) {
@@ -863,7 +863,7 @@ void BaseClient::intializeCallback(const InitializeRequest::Response &initRespon
openDocument(openedDocument); openDocument(openedDocument);
} }
void BaseClient::shutDownCallback(const ShutdownRequest::Response &shutdownResponse) void Client::shutDownCallback(const ShutdownRequest::Response &shutdownResponse)
{ {
QTC_ASSERT(m_state == ShutdownRequested, return); QTC_ASSERT(m_state == ShutdownRequested, return);
QTC_ASSERT(m_clientInterface, return); QTC_ASSERT(m_clientInterface, return);
@@ -879,7 +879,7 @@ void BaseClient::shutDownCallback(const ShutdownRequest::Response &shutdownRespo
m_state = Shutdown; m_state = Shutdown;
} }
bool BaseClient::sendWorkspceFolderChanges() const bool Client::sendWorkspceFolderChanges() const
{ {
if (m_dynamicCapabilities.isRegistered( if (m_dynamicCapabilities.isRegistered(
DidChangeWorkspaceFoldersNotification::methodName).value_or(false)) { DidChangeWorkspaceFoldersNotification::methodName).value_or(false)) {

View File

@@ -58,18 +58,18 @@ namespace LanguageClient {
class BaseClientInterface; class BaseClientInterface;
class BaseClient : public QObject class Client : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit BaseClient(BaseClientInterface *clientInterface); // takes ownership explicit Client(BaseClientInterface *clientInterface); // takes ownership
~BaseClient() override; ~Client() override;
BaseClient(const BaseClient &) = delete; Client(const Client &) = delete;
BaseClient(BaseClient &&) = delete; Client(Client &&) = delete;
BaseClient &operator=(const BaseClient &) = delete; Client &operator=(const Client &) = delete;
BaseClient &operator=(BaseClient &&) = delete; Client &operator=(Client &&) = delete;
enum State { enum State {
Uninitialized, Uninitialized,

View File

@@ -3,7 +3,7 @@ include(../../qtcreatorplugin.pri)
DEFINES += LANGUAGECLIENT_LIBRARY DEFINES += LANGUAGECLIENT_LIBRARY
HEADERS += \ HEADERS += \
baseclient.h \ client.h \
dynamiccapabilities.h \ dynamiccapabilities.h \
languageclient_global.h \ languageclient_global.h \
languageclientcodeassist.h \ languageclientcodeassist.h \
@@ -16,7 +16,7 @@ HEADERS += \
SOURCES += \ SOURCES += \
baseclient.cpp \ client.cpp \
dynamiccapabilities.cpp \ dynamiccapabilities.cpp \
languageclientcodeassist.cpp \ languageclientcodeassist.cpp \
languageclientinterface.cpp \ languageclientinterface.cpp \

View File

@@ -14,8 +14,8 @@ QtcPlugin {
Depends { name: "TextEditor" } Depends { name: "TextEditor" }
files: [ files: [
"baseclient.cpp", "client.cpp",
"baseclient.h", "client.h",
"dynamiccapabilities.cpp", "dynamiccapabilities.cpp",
"dynamiccapabilities.h", "dynamiccapabilities.h",
"languageclient.qrc", "languageclient.qrc",

View File

@@ -25,7 +25,7 @@
#include "languageclientcodeassist.h" #include "languageclientcodeassist.h"
#include "baseclient.h" #include "client.h"
#include "languageclientutils.h" #include "languageclientutils.h"
#include <languageserverprotocol/completion.h> #include <languageserverprotocol/completion.h>
@@ -258,7 +258,7 @@ public:
class LanguageClientCompletionAssistProcessor : public IAssistProcessor class LanguageClientCompletionAssistProcessor : public IAssistProcessor
{ {
public: public:
LanguageClientCompletionAssistProcessor(BaseClient *client); LanguageClientCompletionAssistProcessor(Client *client);
IAssistProposal *perform(const AssistInterface *interface) override; IAssistProposal *perform(const AssistInterface *interface) override;
bool running() override; bool running() override;
bool needsRestart() const override { return true; } bool needsRestart() const override { return true; }
@@ -267,12 +267,12 @@ private:
void handleCompletionResponse(const CompletionRequest::Response &response); void handleCompletionResponse(const CompletionRequest::Response &response);
QPointer<QTextDocument> m_document; QPointer<QTextDocument> m_document;
QPointer<BaseClient> m_client; QPointer<Client> m_client;
bool m_running = false; bool m_running = false;
int m_pos = -1; int m_pos = -1;
}; };
LanguageClientCompletionAssistProcessor::LanguageClientCompletionAssistProcessor(BaseClient *client) LanguageClientCompletionAssistProcessor::LanguageClientCompletionAssistProcessor(Client *client)
: m_client(client) : m_client(client)
{ } { }
@@ -367,7 +367,7 @@ void LanguageClientCompletionAssistProcessor::handleCompletionResponse(
<< items.count() << " completions handled"; << items.count() << " completions handled";
} }
LanguageClientCompletionAssistProvider::LanguageClientCompletionAssistProvider(BaseClient *client) LanguageClientCompletionAssistProvider::LanguageClientCompletionAssistProvider(Client *client)
: m_client(client) : m_client(client)
{ } { }

View File

@@ -29,12 +29,12 @@
namespace LanguageClient { namespace LanguageClient {
class BaseClient; class Client;
class LanguageClientCompletionAssistProvider : public TextEditor::CompletionAssistProvider class LanguageClientCompletionAssistProvider : public TextEditor::CompletionAssistProvider
{ {
public: public:
LanguageClientCompletionAssistProvider(BaseClient *client); LanguageClientCompletionAssistProvider(Client *client);
TextEditor::IAssistProcessor *createProcessor() const override; TextEditor::IAssistProcessor *createProcessor() const override;
RunType runType() const override; RunType runType() const override;
@@ -48,7 +48,7 @@ public:
private: private:
QList<QString> m_triggerChars; QList<QString> m_triggerChars;
int m_activationCharSequenceLength = 0; int m_activationCharSequenceLength = 0;
BaseClient *m_client; Client *m_client;
}; };
} // namespace LanguageClient } // namespace LanguageClient

View File

@@ -109,7 +109,7 @@ void LanguageClientManager::init()
void LanguageClientManager::publishDiagnostics(const Core::Id &id, void LanguageClientManager::publishDiagnostics(const Core::Id &id,
const PublishDiagnosticsParams &params, const PublishDiagnosticsParams &params,
BaseClient *publishingClient) Client *publishingClient)
{ {
const Utils::FileName fileName = params.uri().toFileName(); const Utils::FileName fileName = params.uri().toFileName();
TextEditor::TextDocument *doc = textDocumentForFileName(fileName); TextEditor::TextDocument *doc = textDocumentForFileName(fileName);
@@ -169,7 +169,7 @@ void LanguageClientManager::removeMarks(const Core::Id &id)
removeMarks(fileName, id); removeMarks(fileName, id);
} }
void LanguageClientManager::startClient(BaseClient *client) void LanguageClientManager::startClient(Client *client)
{ {
QTC_ASSERT(client, return); QTC_ASSERT(client, return);
if (managerInstance->m_shuttingDown) { if (managerInstance->m_shuttingDown) {
@@ -178,7 +178,7 @@ void LanguageClientManager::startClient(BaseClient *client)
} }
if (!managerInstance->m_clients.contains(client)) if (!managerInstance->m_clients.contains(client))
managerInstance->m_clients.append(client); managerInstance->m_clients.append(client);
connect(client, &BaseClient::finished, managerInstance, [client](){ connect(client, &Client::finished, managerInstance, [client](){
managerInstance->clientFinished(client); managerInstance->clientFinished(client);
}); });
if (client->start()) if (client->start())
@@ -187,26 +187,26 @@ void LanguageClientManager::startClient(BaseClient *client)
managerInstance->clientFinished(client); managerInstance->clientFinished(client);
} }
QVector<BaseClient *> LanguageClientManager::clients() QVector<Client *> LanguageClientManager::clients()
{ {
return managerInstance->m_clients; return managerInstance->m_clients;
} }
void LanguageClientManager::addExclusiveRequest(const MessageId &id, BaseClient *client) void LanguageClientManager::addExclusiveRequest(const MessageId &id, Client *client)
{ {
managerInstance->m_exclusiveRequests[id] << client; managerInstance->m_exclusiveRequests[id] << client;
} }
void LanguageClientManager::reportFinished(const MessageId &id, BaseClient *byClient) void LanguageClientManager::reportFinished(const MessageId &id, Client *byClient)
{ {
for (BaseClient *client : managerInstance->m_exclusiveRequests[id]) { for (Client *client : managerInstance->m_exclusiveRequests[id]) {
if (client != byClient) if (client != byClient)
client->cancelRequest(id); client->cancelRequest(id);
} }
managerInstance->m_exclusiveRequests.remove(id); managerInstance->m_exclusiveRequests.remove(id);
} }
void LanguageClientManager::deleteClient(BaseClient *client) void LanguageClientManager::deleteClient(Client *client)
{ {
QTC_ASSERT(client, return); QTC_ASSERT(client, return);
client->disconnect(); client->disconnect();
@@ -238,23 +238,23 @@ LanguageClientManager *LanguageClientManager::instance()
return managerInstance; return managerInstance;
} }
QList<BaseClient *> LanguageClientManager::clientsSupportingDocument( QList<Client *> LanguageClientManager::clientsSupportingDocument(
const TextEditor::TextDocument *doc) const TextEditor::TextDocument *doc)
{ {
QTC_ASSERT(doc, return {};); QTC_ASSERT(doc, return {};);
return Utils::filtered(managerInstance->reachableClients(), [doc](BaseClient *client) { return Utils::filtered(managerInstance->reachableClients(), [doc](Client *client) {
return client->isSupportedDocument(doc); return client->isSupportedDocument(doc);
}).toList(); }).toList();
} }
QVector<BaseClient *> LanguageClientManager::reachableClients() QVector<Client *> LanguageClientManager::reachableClients()
{ {
return Utils::filtered(m_clients, &BaseClient::reachable); return Utils::filtered(m_clients, &Client::reachable);
} }
static void sendToInterfaces(const IContent &content, const QVector<BaseClient *> &interfaces) static void sendToInterfaces(const IContent &content, const QVector<Client *> &interfaces)
{ {
for (BaseClient *interface : interfaces) for (Client *interface : interfaces)
interface->sendContent(content); interface->sendContent(content);
} }
@@ -263,11 +263,11 @@ void LanguageClientManager::sendToAllReachableServers(const IContent &content)
sendToInterfaces(content, reachableClients()); sendToInterfaces(content, reachableClients());
} }
void LanguageClientManager::clientFinished(BaseClient *client) void LanguageClientManager::clientFinished(Client *client)
{ {
constexpr int restartTimeoutS = 5; constexpr int restartTimeoutS = 5;
const bool unexpectedFinish = client->state() != BaseClient::Shutdown const bool unexpectedFinish = client->state() != Client::Shutdown
&& client->state() != BaseClient::ShutdownRequested; && client->state() != Client::ShutdownRequested;
if (unexpectedFinish && !m_shuttingDown && client->reset()) { if (unexpectedFinish && !m_shuttingDown && client->reset()) {
removeMarks(client->id()); removeMarks(client->id());
client->disconnect(this); client->disconnect(this);
@@ -287,7 +287,7 @@ void LanguageClientManager::editorOpened(Core::IEditor *iEditor)
{ {
using namespace TextEditor; using namespace TextEditor;
Core::IDocument *document = iEditor->document(); Core::IDocument *document = iEditor->document();
for (BaseClient *interface : reachableClients()) for (Client *interface : reachableClients())
interface->openDocument(document); interface->openDocument(document);
if (auto textDocument = qobject_cast<TextDocument *>(document)) { if (auto textDocument = qobject_cast<TextDocument *>(document)) {
@@ -315,7 +315,7 @@ void LanguageClientManager::editorsClosed(const QList<Core::IEditor *> &editors)
removeMarks(editor->document()->filePath()); removeMarks(editor->document()->filePath());
const DidCloseTextDocumentParams params(TextDocumentIdentifier( const DidCloseTextDocumentParams params(TextDocumentIdentifier(
DocumentUri::fromFileName(editor->document()->filePath()))); DocumentUri::fromFileName(editor->document()->filePath())));
for (BaseClient *interface : reachableClients()) for (Client *interface : reachableClients())
interface->closeDocument(params); interface->closeDocument(params);
} }
} }
@@ -323,13 +323,13 @@ void LanguageClientManager::editorsClosed(const QList<Core::IEditor *> &editors)
void LanguageClientManager::documentContentsSaved(Core::IDocument *document) void LanguageClientManager::documentContentsSaved(Core::IDocument *document)
{ {
for (BaseClient *interface : reachableClients()) for (Client *interface : reachableClients())
interface->documentContentsSaved(document); interface->documentContentsSaved(document);
} }
void LanguageClientManager::documentWillSave(Core::IDocument *document) void LanguageClientManager::documentWillSave(Core::IDocument *document)
{ {
for (BaseClient *interface : reachableClients()) for (Client *interface : reachableClients())
interface->documentContentsSaved(document); interface->documentContentsSaved(document);
} }
@@ -355,7 +355,7 @@ void LanguageClientManager::findLinkAt(const Utils::FileName &filePath,
} }
} }
}); });
for (BaseClient *interface : reachableClients()) { for (Client *interface : reachableClients()) {
if (interface->findLinkAt(request)) if (interface->findLinkAt(request))
m_exclusiveRequests[request.id()] << interface; m_exclusiveRequests[request.id()] << interface;
} }
@@ -421,7 +421,7 @@ void LanguageClientManager::findUsages(const Utils::FileName &filePath, const QT
search->popup(); search->popup();
} }
}; };
for (BaseClient *client : reachableClients()) { for (Client *client : reachableClients()) {
request.setResponseCallback([callback, clientName = client->name()] request.setResponseCallback([callback, clientName = client->name()]
(const FindReferencesRequest::Response &response){ (const FindReferencesRequest::Response &response){
callback(clientName, response); callback(clientName, response);
@@ -433,13 +433,13 @@ void LanguageClientManager::findUsages(const Utils::FileName &filePath, const QT
void LanguageClientManager::projectAdded(ProjectExplorer::Project *project) void LanguageClientManager::projectAdded(ProjectExplorer::Project *project)
{ {
for (BaseClient *interface : reachableClients()) for (Client *interface : reachableClients())
interface->projectOpened(project); interface->projectOpened(project);
} }
void LanguageClientManager::projectRemoved(ProjectExplorer::Project *project) void LanguageClientManager::projectRemoved(ProjectExplorer::Project *project)
{ {
for (BaseClient *interface : reachableClients()) for (Client *interface : reachableClients())
interface->projectClosed(project); interface->projectClosed(project);
} }

View File

@@ -25,7 +25,7 @@
#pragma once #pragma once
#include "baseclient.h" #include "client.h"
#include "languageclientsettings.h" #include "languageclientsettings.h"
#include <coreplugin/id.h> #include <coreplugin/id.h>
@@ -56,26 +56,26 @@ public:
static void init(); static void init();
static void publishDiagnostics(const Core::Id &id, static void publishDiagnostics(const Core::Id &id,
const LanguageServerProtocol::PublishDiagnosticsParams &params, BaseClient *publishingClient); const LanguageServerProtocol::PublishDiagnosticsParams &params, Client *publishingClient);
static void removeMark(LanguageClientMark *mark); static void removeMark(LanguageClientMark *mark);
static void removeMarks(const Utils::FileName &fileName); static void removeMarks(const Utils::FileName &fileName);
static void removeMarks(const Utils::FileName &fileName, const Core::Id &id); static void removeMarks(const Utils::FileName &fileName, const Core::Id &id);
static void removeMarks(const Core::Id &id); static void removeMarks(const Core::Id &id);
static void startClient(BaseClient *client); static void startClient(Client *client);
static QVector<BaseClient *> clients(); static QVector<Client *> clients();
static void addExclusiveRequest(const LanguageServerProtocol::MessageId &id, BaseClient *client); static void addExclusiveRequest(const LanguageServerProtocol::MessageId &id, Client *client);
static void reportFinished(const LanguageServerProtocol::MessageId &id, BaseClient *byClient); static void reportFinished(const LanguageServerProtocol::MessageId &id, Client *byClient);
static void deleteClient(BaseClient *client); static void deleteClient(Client *client);
static void shutdown(); static void shutdown();
static LanguageClientManager *instance(); static LanguageClientManager *instance();
static QList<BaseClient *> clientsSupportingDocument(const TextEditor::TextDocument *doc); static QList<Client *> clientsSupportingDocument(const TextEditor::TextDocument *doc);
signals: signals:
void shutdownFinished(); void shutdownFinished();
@@ -94,15 +94,15 @@ private:
void projectAdded(ProjectExplorer::Project *project); void projectAdded(ProjectExplorer::Project *project);
void projectRemoved(ProjectExplorer::Project *project); void projectRemoved(ProjectExplorer::Project *project);
QVector<BaseClient *> reachableClients(); QVector<Client *> reachableClients();
void sendToAllReachableServers(const LanguageServerProtocol::IContent &content); void sendToAllReachableServers(const LanguageServerProtocol::IContent &content);
void clientFinished(BaseClient *client); void clientFinished(Client *client);
bool m_shuttingDown = false; bool m_shuttingDown = false;
QVector<BaseClient *> m_clients; QVector<Client *> m_clients;
QHash<Utils::FileName, QHash<Core::Id, QVector<LanguageClientMark *>>> m_marks; QHash<Utils::FileName, QHash<Core::Id, QVector<LanguageClientMark *>>> m_marks;
QHash<LanguageServerProtocol::MessageId, QList<BaseClient *>> m_exclusiveRequests; QHash<LanguageServerProtocol::MessageId, QList<Client *>> m_exclusiveRequests;
friend class LanguageClientPlugin; friend class LanguageClientPlugin;
}; };

View File

@@ -147,7 +147,7 @@ public:
class LanguageClientOutlineWidget : public TextEditor::IOutlineWidget class LanguageClientOutlineWidget : public TextEditor::IOutlineWidget
{ {
public: public:
LanguageClientOutlineWidget(BaseClient *client, TextEditor::BaseTextEditor *editor); LanguageClientOutlineWidget(Client *client, TextEditor::BaseTextEditor *editor);
// IOutlineWidget interface // IOutlineWidget interface
public: public:
@@ -160,14 +160,14 @@ private:
void updateSelectionInTree(const QTextCursor &currentCursor); void updateSelectionInTree(const QTextCursor &currentCursor);
void onItemActivated(const QModelIndex &index); void onItemActivated(const QModelIndex &index);
QPointer<BaseClient> m_client; QPointer<Client> m_client;
QPointer<TextEditor::BaseTextEditor> m_editor; QPointer<TextEditor::BaseTextEditor> m_editor;
LanguageClientOutlineModel m_model; LanguageClientOutlineModel m_model;
Utils::TreeView m_view; Utils::TreeView m_view;
bool m_sync = false; bool m_sync = false;
}; };
LanguageClientOutlineWidget::LanguageClientOutlineWidget(BaseClient *client, LanguageClientOutlineWidget::LanguageClientOutlineWidget(Client *client,
TextEditor::BaseTextEditor *editor) TextEditor::BaseTextEditor *editor)
: m_client(client) : m_client(client)
, m_editor(editor) , m_editor(editor)
@@ -256,7 +256,7 @@ void LanguageClientOutlineWidget::onItemActivated(const QModelIndex &index)
m_editor->widget()->setFocus(); m_editor->widget()->setFocus();
} }
static bool clientSupportsDocumentSymbols(const BaseClient *client, const TextEditor::TextDocument *doc) static bool clientSupportsDocumentSymbols(const Client *client, const TextEditor::TextDocument *doc)
{ {
DynamicCapabilities dc = client->dynamicCapabilities(); DynamicCapabilities dc = client->dynamicCapabilities();
if (dc.isRegistered(DocumentSymbolsRequest::methodName).value_or(false)) { if (dc.isRegistered(DocumentSymbolsRequest::methodName).value_or(false)) {
@@ -273,7 +273,7 @@ bool LanguageClientOutlineWidgetFactory::supportsEditor(Core::IEditor *editor) c
if (!doc) if (!doc)
return false; return false;
auto clients = LanguageClientManager::clientsSupportingDocument(doc); auto clients = LanguageClientManager::clientsSupportingDocument(doc);
return Utils::anyOf(clients, [doc](const BaseClient *client){ return Utils::anyOf(clients, [doc](const Client *client){
return clientSupportsDocumentSymbols(client, doc); return clientSupportsDocumentSymbols(client, doc);
}); });
} }
@@ -282,9 +282,9 @@ TextEditor::IOutlineWidget *LanguageClientOutlineWidgetFactory::createWidget(Cor
{ {
auto textEditor = qobject_cast<TextEditor::BaseTextEditor *>(editor); auto textEditor = qobject_cast<TextEditor::BaseTextEditor *>(editor);
QTC_ASSERT(textEditor, return nullptr); QTC_ASSERT(textEditor, return nullptr);
QList<BaseClient *> clients = LanguageClientManager::clientsSupportingDocument(textEditor->textDocument()); QList<Client *> clients = LanguageClientManager::clientsSupportingDocument(textEditor->textDocument());
QTC_ASSERT(!clients.isEmpty(), return nullptr); QTC_ASSERT(!clients.isEmpty(), return nullptr);
clients = Utils::filtered(clients, [doc = textEditor->textDocument()](const BaseClient *client){ clients = Utils::filtered(clients, [doc = textEditor->textDocument()](const Client *client){
return clientSupportsDocumentSymbols(client, doc); return clientSupportsDocumentSymbols(client, doc);
}); });
return new LanguageClientOutlineWidget(clients.first(), textEditor); return new LanguageClientOutlineWidget(clients.first(), textEditor);

View File

@@ -25,7 +25,7 @@
#include "languageclientplugin.h" #include "languageclientplugin.h"
#include "baseclient.h" #include "client.h"
namespace LanguageClient { namespace LanguageClient {

View File

@@ -25,7 +25,7 @@
#include "languageclientsettings.h" #include "languageclientsettings.h"
#include "baseclient.h" #include "client.h"
#include "languageclientmanager.h" #include "languageclientmanager.h"
#include "languageclient_global.h" #include "languageclient_global.h"
#include "languageclientinterface.h" #include "languageclientinterface.h"
@@ -398,11 +398,11 @@ bool BaseSettings::isValid() const
return !m_name.isEmpty(); return !m_name.isEmpty();
} }
BaseClient *BaseSettings::createClient() const Client *BaseSettings::createClient() const
{ {
BaseClientInterface *interface = createInterface(); BaseClientInterface *interface = createInterface();
if (QTC_GUARD(interface)) { if (QTC_GUARD(interface)) {
auto *client = new BaseClient(interface); auto *client = new Client(interface);
client->setName(m_name); client->setName(m_name);
client->setSupportedLanguage(m_languageFilter); client->setSupportedLanguage(m_languageFilter);
return client; return client;

View File

@@ -43,7 +43,7 @@ namespace LanguageClient {
constexpr char noLanguageFilter[] = "No Filter"; constexpr char noLanguageFilter[] = "No Filter";
class BaseClient; class Client;
class BaseClientInterface; class BaseClientInterface;
struct LanguageFilter struct LanguageFilter
@@ -67,14 +67,14 @@ public:
QString m_name = QString("New Language Server"); QString m_name = QString("New Language Server");
bool m_enabled = true; bool m_enabled = true;
LanguageFilter m_languageFilter; LanguageFilter m_languageFilter;
QPointer<BaseClient> m_client; // not owned QPointer<Client> m_client; // not owned
virtual void applyFromSettingsWidget(QWidget *widget); virtual void applyFromSettingsWidget(QWidget *widget);
virtual QWidget *createSettingsWidget(QWidget *parent = nullptr) const; virtual QWidget *createSettingsWidget(QWidget *parent = nullptr) const;
virtual BaseSettings *copy() const { return new BaseSettings(*this); } virtual BaseSettings *copy() const { return new BaseSettings(*this); }
virtual bool needsRestart() const; virtual bool needsRestart() const;
virtual bool isValid() const ; virtual bool isValid() const ;
BaseClient *createClient() const; Client *createClient() const;
virtual QVariantMap toMap() const; virtual QVariantMap toMap() const;
virtual void fromMap(const QVariantMap &map); virtual void fromMap(const QVariantMap &map);

View File

@@ -25,7 +25,7 @@
#include "languageclientutils.h" #include "languageclientutils.h"
#include "baseclient.h" #include "client.h"
#include <coreplugin/editormanager/documentmodel.h> #include <coreplugin/editormanager/documentmodel.h>
@@ -131,7 +131,7 @@ QTextCursor endOfLineCursor(const QTextCursor &cursor)
return ret; return ret;
} }
void updateCodeActionRefactoringMarker(BaseClient *client, void updateCodeActionRefactoringMarker(Client *client,
const CodeAction &action, const CodeAction &action,
const DocumentUri &uri) const DocumentUri &uri)
{ {
@@ -176,7 +176,7 @@ void updateCodeActionRefactoringMarker(BaseClient *client,
} }
} else if (action.command().has_value()) { } else if (action.command().has_value()) {
const Command command = action.command().value(); const Command command = action.command().value();
marker.callback = [command, client = QPointer<BaseClient>(client)](const TextEditorWidget *) { marker.callback = [command, client = QPointer<Client>(client)](const TextEditorWidget *) {
if (client) if (client)
client->executeCommand(command); client->executeCommand(command);
}; };

View File

@@ -37,7 +37,7 @@ class TextDocumentManipulatorInterface;
namespace LanguageClient { namespace LanguageClient {
class BaseClient; class Client;
bool applyWorkspaceEdit(const LanguageServerProtocol::WorkspaceEdit &edit); bool applyWorkspaceEdit(const LanguageServerProtocol::WorkspaceEdit &edit);
bool applyTextDocumentEdit(const LanguageServerProtocol::TextDocumentEdit &edit); bool applyTextDocumentEdit(const LanguageServerProtocol::TextDocumentEdit &edit);
@@ -46,7 +46,7 @@ bool applyTextEdits(const LanguageServerProtocol::DocumentUri &uri,
void applyTextEdit(TextEditor::TextDocumentManipulatorInterface &manipulator, void applyTextEdit(TextEditor::TextDocumentManipulatorInterface &manipulator,
const LanguageServerProtocol::TextEdit &edit); const LanguageServerProtocol::TextEdit &edit);
TextEditor::TextDocument *textDocumentForFileName(const Utils::FileName &fileName); TextEditor::TextDocument *textDocumentForFileName(const Utils::FileName &fileName);
void updateCodeActionRefactoringMarker(BaseClient *client, void updateCodeActionRefactoringMarker(Client *client,
const LanguageServerProtocol::CodeAction &action, const LanguageServerProtocol::CodeAction &action,
const LanguageServerProtocol::DocumentUri &uri); const LanguageServerProtocol::DocumentUri &uri);