diff options
author | David Schulz <david.schulz@qt.io> | 2019-03-12 12:46:38 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-03-12 12:47:43 +0000 |
commit | dd92ef15c196b48fa16fa5430bd4c7f29f7a5589 (patch) | |
tree | dd54474e8c08046959a27cb5bdc85bafffdda0ba /src/plugins/languageclient/languageclientmanager.cpp | |
parent | 2db65630ddaf9bbdbc45acd746e7b7426405489e (diff) |
LanguageClient: Use document instead of editor opened/closed
Makes sure that the same document is not twice reported as opened to the
language server.
Change-Id: I348b0f4d8f9162e6ba73a4e3292abce146935eca
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/languageclient/languageclientmanager.cpp')
-rw-r--r-- | src/plugins/languageclient/languageclientmanager.cpp | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/plugins/languageclient/languageclientmanager.cpp b/src/plugins/languageclient/languageclientmanager.cpp index 22261e6273..7d481816a4 100644 --- a/src/plugins/languageclient/languageclientmanager.cpp +++ b/src/plugins/languageclient/languageclientmanager.cpp @@ -69,10 +69,10 @@ void LanguageClientManager::init() using namespace Core; using namespace ProjectExplorer; QTC_ASSERT(managerInstance, return); - connect(EditorManager::instance(), &EditorManager::editorOpened, - managerInstance, &LanguageClientManager::editorOpened); - connect(EditorManager::instance(), &EditorManager::editorsClosed, - managerInstance, &LanguageClientManager::editorsClosed); + connect(EditorManager::instance(), &EditorManager::documentOpened, + managerInstance, &LanguageClientManager::documentOpened); + connect(EditorManager::instance(), &EditorManager::documentClosed, + managerInstance, &LanguageClientManager::documentClosed); connect(EditorManager::instance(), &EditorManager::saved, managerInstance, &LanguageClientManager::documentContentsSaved); connect(EditorManager::instance(), &EditorManager::aboutToSave, @@ -195,10 +195,9 @@ void LanguageClientManager::clientFinished(Client *client) } } -void LanguageClientManager::editorOpened(Core::IEditor *iEditor) +void LanguageClientManager::documentOpened(Core::IDocument *document) { using namespace TextEditor; - Core::IDocument *document = iEditor->document(); for (Client *interface : reachableClients()) interface->openDocument(document); @@ -208,28 +207,24 @@ void LanguageClientManager::editorOpened(Core::IEditor *iEditor) connect(widget, &TextEditorWidget::requestLinkAt, this, [this, filePath = document->filePath()] (const QTextCursor &cursor, Utils::ProcessLinkCallback &callback){ - findLinkAt(filePath, cursor, callback); - }); + findLinkAt(filePath, cursor, callback); + }); connect(widget, &TextEditorWidget::requestUsages, this, [this, filePath = document->filePath()] (const QTextCursor &cursor){ - findUsages(filePath, cursor); - }); + findUsages(filePath, cursor); + }); } } } } -void LanguageClientManager::editorsClosed(const QList<Core::IEditor *> &editors) +void LanguageClientManager::documentClosed(Core::IDocument *document) { - for (auto iEditor : editors) { - if (auto editor = qobject_cast<TextEditor::BaseTextEditor *>(iEditor)) { - const DidCloseTextDocumentParams params(TextDocumentIdentifier( - DocumentUri::fromFileName(editor->document()->filePath()))); - for (Client *interface : reachableClients()) - interface->closeDocument(params); - } - } + const DidCloseTextDocumentParams params( + TextDocumentIdentifier(DocumentUri::fromFileName(document->filePath()))); + for (Client *interface : reachableClients()) + interface->closeDocument(params); } void LanguageClientManager::documentContentsSaved(Core::IDocument *document) |