diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index ddcd59bd568..09111ab14de 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -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; diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h index 5e8b2b32089..24050dc9872 100644 --- a/src/plugins/languageclient/client.h +++ b/src/plugins/languageclient/client.h @@ -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 ®istrations); + void unregisterCapabilities(const QList &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 ®istrations); - void unregisterCapabilities(const QList &unregistrations); void cursorPositionChanged(TextEditor::TextEditorWidget *widget); - - SymbolSupport &symbolSupport(); - - void requestCodeActions(const LanguageServerProtocol::DocumentUri &uri, - const QList &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 &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 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 - void log(const LanguageServerProtocol::ResponseError &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 &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;