forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -69,10 +69,10 @@ void LanguageClientManager::init()
|
|||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
QTC_ASSERT(managerInstance, return);
|
QTC_ASSERT(managerInstance, return);
|
||||||
connect(EditorManager::instance(), &EditorManager::editorOpened,
|
connect(EditorManager::instance(), &EditorManager::documentOpened,
|
||||||
managerInstance, &LanguageClientManager::editorOpened);
|
managerInstance, &LanguageClientManager::documentOpened);
|
||||||
connect(EditorManager::instance(), &EditorManager::editorsClosed,
|
connect(EditorManager::instance(), &EditorManager::documentClosed,
|
||||||
managerInstance, &LanguageClientManager::editorsClosed);
|
managerInstance, &LanguageClientManager::documentClosed);
|
||||||
connect(EditorManager::instance(), &EditorManager::saved,
|
connect(EditorManager::instance(), &EditorManager::saved,
|
||||||
managerInstance, &LanguageClientManager::documentContentsSaved);
|
managerInstance, &LanguageClientManager::documentContentsSaved);
|
||||||
connect(EditorManager::instance(), &EditorManager::aboutToSave,
|
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;
|
using namespace TextEditor;
|
||||||
Core::IDocument *document = iEditor->document();
|
|
||||||
for (Client *interface : reachableClients())
|
for (Client *interface : reachableClients())
|
||||||
interface->openDocument(document);
|
interface->openDocument(document);
|
||||||
|
|
||||||
@@ -208,28 +207,24 @@ void LanguageClientManager::editorOpened(Core::IEditor *iEditor)
|
|||||||
connect(widget, &TextEditorWidget::requestLinkAt, this,
|
connect(widget, &TextEditorWidget::requestLinkAt, this,
|
||||||
[this, filePath = document->filePath()]
|
[this, filePath = document->filePath()]
|
||||||
(const QTextCursor &cursor, Utils::ProcessLinkCallback &callback){
|
(const QTextCursor &cursor, Utils::ProcessLinkCallback &callback){
|
||||||
findLinkAt(filePath, cursor, callback);
|
findLinkAt(filePath, cursor, callback);
|
||||||
});
|
});
|
||||||
connect(widget, &TextEditorWidget::requestUsages, this,
|
connect(widget, &TextEditorWidget::requestUsages, this,
|
||||||
[this, filePath = document->filePath()]
|
[this, filePath = document->filePath()]
|
||||||
(const QTextCursor &cursor){
|
(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) {
|
const DidCloseTextDocumentParams params(
|
||||||
if (auto editor = qobject_cast<TextEditor::BaseTextEditor *>(iEditor)) {
|
TextDocumentIdentifier(DocumentUri::fromFileName(document->filePath())));
|
||||||
const DidCloseTextDocumentParams params(TextDocumentIdentifier(
|
for (Client *interface : reachableClients())
|
||||||
DocumentUri::fromFileName(editor->document()->filePath())));
|
interface->closeDocument(params);
|
||||||
for (Client *interface : reachableClients())
|
|
||||||
interface->closeDocument(params);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LanguageClientManager::documentContentsSaved(Core::IDocument *document)
|
void LanguageClientManager::documentContentsSaved(Core::IDocument *document)
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ signals:
|
|||||||
private:
|
private:
|
||||||
LanguageClientManager();
|
LanguageClientManager();
|
||||||
|
|
||||||
void editorOpened(Core::IEditor *editor);
|
void documentOpened(Core::IDocument *document);
|
||||||
void editorsClosed(const QList<Core::IEditor *> &editors);
|
void documentClosed(Core::IDocument *document);
|
||||||
void documentContentsSaved(Core::IDocument *document);
|
void documentContentsSaved(Core::IDocument *document);
|
||||||
void documentWillSave(Core::IDocument *document);
|
void documentWillSave(Core::IDocument *document);
|
||||||
void findLinkAt(const Utils::FileName &filePath, const QTextCursor &cursor,
|
void findLinkAt(const Utils::FileName &filePath, const QTextCursor &cursor,
|
||||||
|
|||||||
Reference in New Issue
Block a user