diff options
Diffstat (limited to 'src/plugins/languageclient/client.h')
-rw-r--r-- | src/plugins/languageclient/client.h | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/src/plugins/languageclient/client.h b/src/plugins/languageclient/client.h index b2a91307f1..85609efdea 100644 --- a/src/plugins/languageclient/client.h +++ b/src/plugins/languageclient/client.h @@ -34,9 +34,11 @@ #include "languageclienthoverhandler.h" #include "languageclientquickfix.h" #include "languageclientsettings.h" +#include "languageclientsymbolsupport.h" -#include <coreplugin/id.h> #include <coreplugin/messagemanager.h> + +#include <utils/id.h> #include <utils/link.h> #include <languageserverprotocol/client.h> @@ -59,6 +61,7 @@ namespace Core { class IDocument; } namespace ProjectExplorer { class Project; } namespace TextEditor { +class IAssistProcessor; class TextDocument; class TextEditorWidget; class TextMark; @@ -110,10 +113,10 @@ public: int charsAdded); void registerCapabilities(const QList<LanguageServerProtocol::Registration> ®istrations); void unregisterCapabilities(const QList<LanguageServerProtocol::Unregistration> &unregistrations); - bool findLinkAt(LanguageServerProtocol::GotoDefinitionRequest &request); - bool findUsages(LanguageServerProtocol::FindReferencesRequest &request); void cursorPositionChanged(TextEditor::TextEditorWidget *widget); + SymbolSupport &symbolSupport(); + void requestCodeActions(const LanguageServerProtocol::DocumentUri &uri, const QList<LanguageServerProtocol::Diagnostic> &diagnostics); void requestCodeActions(const LanguageServerProtocol::CodeActionRequest &request); @@ -129,6 +132,7 @@ public: const ProjectExplorer::Project *project() const; void projectOpened(ProjectExplorer::Project *project); void projectClosed(ProjectExplorer::Project *project); + void projectFileListChanged(); void sendContent(const LanguageServerProtocol::IContent &content); void sendContent(const LanguageServerProtocol::DocumentUri &uri, @@ -136,14 +140,18 @@ public: 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; + void addAssistProcessor(TextEditor::IAssistProcessor *processor); + void removeAssistProcessor(TextEditor::IAssistProcessor *processor); + void setName(const QString &name) { m_displayName = name; } QString name() const { return m_displayName; } - Core::Id id() const { return m_id; } + Utils::Id id() const { return m_id; } bool needsRestart(const BaseSettings *) const; @@ -171,8 +179,11 @@ public: HoverHandler *hoverHandler(); void rehighlight(); + bool documentUpdatePostponed(const QString &fileName) const; + signals: void initialized(LanguageServerProtocol::ServerCapabilities capabilities); + void documentUpdated(TextEditor::TextDocument *document); void finished(); protected: @@ -200,6 +211,7 @@ private: void showDiagnostics(const LanguageServerProtocol::DocumentUri &uri); void removeDiagnostics(const LanguageServerProtocol::DocumentUri &uri); void resetAssistProviders(TextEditor::TextDocument *document); + void sendPostponedDocumentUpdates(); using ContentHandler = std::function<void(const QByteArray &, QTextCodec *, QString &, LanguageServerProtocol::ResponseHandlers, @@ -210,8 +222,13 @@ private: QHash<QByteArray, ContentHandler> m_contentHandler; QString m_displayName; LanguageFilter m_languagFilter; + QJsonObject m_initializationOptions; QMap<TextEditor::TextDocument *, QString> m_openedDocument; - Core::Id m_id; + QMap<TextEditor::TextDocument *, + QList<LanguageServerProtocol::DidChangeTextDocumentParams::TextDocumentContentChangeEvent>> + m_documentsToUpdate; + QTimer m_documentUpdateTimer; + Utils::Id m_id; LanguageServerProtocol::ServerCapabilities m_serverCapabilities; DynamicCapabilities m_dynamicCapabilities; struct AssistProviders @@ -231,6 +248,8 @@ private: HoverHandler m_hoverHandler; QHash<LanguageServerProtocol::DocumentUri, TextEditor::HighlightingResults> m_highlights; const ProjectExplorer::Project *m_project = nullptr; + QSet<TextEditor::IAssistProcessor *> m_runningAssistProcessors; + SymbolSupport m_symbolSupport; }; } // namespace LanguageClient |