LanguageClient: clean up client interface declaration

Change-Id: I18b5b8a5b39a6be7c538054385c7dca188676eef
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-02-15 12:01:53 +01:00
parent a2d6c2b34a
commit fa5fdef6e1
2 changed files with 46 additions and 50 deletions

View File

@@ -904,7 +904,7 @@ void Client::handleMessage(const BaseMessage &message)
}
}
void Client::log(const QString &message)
void Client::log(const QString &message) const
{
Core::MessageManager::writeFlashing(QString("LanguageClient %1: %2").arg(name(), message));
}
@@ -919,11 +919,6 @@ const DynamicCapabilities &Client::dynamicCapabilities() const
return m_dynamicCapabilities;
}
const BaseClientInterface *Client::clientInterface() const
{
return m_clientInterface.data();
}
DocumentSymbolCache *Client::documentSymbolCache()
{
return &m_documentSymbolCache;

View File

@@ -84,6 +84,19 @@ public:
Client &operator=(const Client &) = delete;
Client &operator=(Client &&) = delete;
// basic properties
Utils::Id id() const { return m_id; }
void setName(const QString &name) { m_displayName = name; }
QString name() const { return m_displayName; }
void sendContent(const LanguageServerProtocol::IContent &content);
void cancelRequest(const LanguageServerProtocol::MessageId &id);
// server state handling
void start();
void setInitializationOptions(const QJsonObject& initializationOptions);
void initialize();
bool reset();
void shutdown();
enum State {
Uninitialized,
InitializeRequested,
@@ -92,13 +105,20 @@ public:
Shutdown,
Error
};
void initialize();
void shutdown();
State state() const;
bool reachable() const { return m_state == Initialized; }
// capabilities
const LanguageServerProtocol::ServerCapabilities &capabilities() const;
const DynamicCapabilities &dynamicCapabilities() const;
void registerCapabilities(const QList<LanguageServerProtocol::Registration> &registrations);
void unregisterCapabilities(const QList<LanguageServerProtocol::Unregistration> &unregistrations);
// document synchronization
void setSupportedLanguage(const LanguageFilter &filter);
bool isSupportedDocument(const TextEditor::TextDocument *document) const;
bool isSupportedFile(const Utils::FilePath &filePath, const QString &mimeType) const;
bool isSupportedUri(const LanguageServerProtocol::DocumentUri &uri) const;
void openDocument(TextEditor::TextDocument *document);
void closeDocument(TextEditor::TextDocument *document);
void activateDocument(TextEditor::TextDocument *document);
@@ -110,18 +130,8 @@ public:
int position,
int charsRemoved,
int charsAdded);
void registerCapabilities(const QList<LanguageServerProtocol::Registration> &registrations);
void unregisterCapabilities(const QList<LanguageServerProtocol::Unregistration> &unregistrations);
void cursorPositionChanged(TextEditor::TextEditorWidget *widget);
SymbolSupport &symbolSupport();
void requestCodeActions(const LanguageServerProtocol::DocumentUri &uri,
const QList<LanguageServerProtocol::Diagnostic> &diagnostics);
void requestCodeActions(const LanguageServerProtocol::CodeActionRequest &request);
void handleCodeActionResponse(const LanguageServerProtocol::CodeActionRequest::Response &response,
const LanguageServerProtocol::DocumentUri &uri);
void executeCommand(const LanguageServerProtocol::Command &command);
bool documentUpdatePostponed(const Utils::FilePath &fileName) const;
// workspace control
void setCurrentProject(ProjectExplorer::Project *project);
@@ -129,45 +139,34 @@ public:
void projectOpened(ProjectExplorer::Project *project);
void projectClosed(ProjectExplorer::Project *project);
void sendContent(const LanguageServerProtocol::IContent &content);
void cancelRequest(const LanguageServerProtocol::MessageId &id);
void setSupportedLanguage(const LanguageFilter &filter);
void setInitializationOptions(const QJsonObject& initializationOptions);
bool isSupportedDocument(const TextEditor::TextDocument *document) const;
bool isSupportedFile(const Utils::FilePath &filePath, const QString &mimeType) const;
bool isSupportedUri(const LanguageServerProtocol::DocumentUri &uri) const;
// commands
void requestCodeActions(const LanguageServerProtocol::DocumentUri &uri,
const QList<LanguageServerProtocol::Diagnostic> &diagnostics);
void requestCodeActions(const LanguageServerProtocol::CodeActionRequest &request);
void handleCodeActionResponse(const LanguageServerProtocol::CodeActionRequest::Response &response,
const LanguageServerProtocol::DocumentUri &uri);
void executeCommand(const LanguageServerProtocol::Command &command);
// language support
void addAssistProcessor(TextEditor::IAssistProcessor *processor);
void removeAssistProcessor(TextEditor::IAssistProcessor *processor);
void setName(const QString &name) { m_displayName = name; }
QString name() const { return m_displayName; }
Utils::Id id() const { return m_id; }
SymbolSupport &symbolSupport();
DocumentSymbolCache *documentSymbolCache();
HoverHandler *hoverHandler();
QList<LanguageServerProtocol::Diagnostic> diagnosticsAt(
const LanguageServerProtocol::DocumentUri &uri,
const QTextCursor &cursor) const;
void start();
bool reset();
// formatting
void formatFile(const TextEditor::TextDocument *document);
void formatRange(const TextEditor::TextDocument *document, const QTextCursor &cursor);
void log(const QString &message);
// logging
void log(const QString &message) const;
template<typename Error>
void log(const LanguageServerProtocol::ResponseError<Error> &responseError)
{
log(responseError.toString());
}
const LanguageServerProtocol::ServerCapabilities &capabilities() const;
const DynamicCapabilities &dynamicCapabilities() const;
const BaseClientInterface *clientInterface() const;
DocumentSymbolCache *documentSymbolCache();
HoverHandler *hoverHandler();
void rehighlight();
bool documentUpdatePostponed(const Utils::FilePath &fileName) const;
void log(const LanguageServerProtocol::ResponseError<Error> &responseError) const
{ log(responseError.toString()); }
signals:
void initialized(const LanguageServerProtocol::ServerCapabilities &capabilities);
@@ -203,6 +202,8 @@ private:
void updateCompletionProvider(TextEditor::TextDocument *document);
void updateFunctionHintProvider(TextEditor::TextDocument *document);
void rehighlight();
using ContentHandler = std::function<void(const QByteArray &, QTextCodec *, QString &,
LanguageServerProtocol::ResponseHandlers,
LanguageServerProtocol::MethodHandler)>;