TextEditor: request assist after trigger char inserted

... while proposal is shown

amends 23d63dcc8b

Fixes: QTCREATORBUG-24225
Change-Id: Ie935c7c1d4786a4fd3cf338d7f1df52ae28de63b
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2020-09-23 12:48:17 +02:00
parent fcaa6801cf
commit 2842b613ed
3 changed files with 28 additions and 12 deletions

View File

@@ -196,6 +196,8 @@ void ClangEditorDocumentProcessor::updateCodeWarnings(
uint documentRevision)
{
if (documentRevision == revision()) {
if (m_invalidationState == InvalidationState::Scheduled)
m_invalidationState = InvalidationState::Canceled;
m_diagnosticManager.processNewDiagnostics(diagnostics, m_isProjectFile);
const auto codeWarnings = m_diagnosticManager.takeExtraSelections();
const auto fixitAvailableMarkers = m_diagnosticManager.takeFixItAvailableMarkers();
@@ -298,11 +300,14 @@ TextEditor::QuickFixOperations ClangEditorDocumentProcessor::extraRefactoringOpe
void ClangEditorDocumentProcessor::editorDocumentTimerRestarted()
{
m_updateBackendDocumentTimer.stop(); // Wait for the next call to run().
m_invalidationState = InvalidationState::Scheduled;
}
void ClangEditorDocumentProcessor::invalidateDiagnostics()
{
m_diagnosticManager.invalidateDiagnostics();
if (m_invalidationState != InvalidationState::Canceled)
m_diagnosticManager.invalidateDiagnostics();
m_invalidationState = InvalidationState::Off;
}
TextEditor::TextMarks ClangEditorDocumentProcessor::diagnosticTextMarksAt(uint line,

View File

@@ -140,6 +140,7 @@ private:
QFutureWatcher<void> m_parserWatcher;
QTimer m_updateBackendDocumentTimer;
unsigned m_parserRevision;
enum class InvalidationState { Off, Scheduled, Canceled } m_invalidationState;
QVector<ClangBackEnd::TokenInfoContainer> m_tokenInfos;
CppTools::SemanticHighlighter m_semanticHighlighter;