ClangD: skip automatic code action request

.. after receiving diagnostics since the code actions are already
inlined into the diagnostics.

Change-Id: I11ed1270344ff5119dd111503d173eef2f340c1d
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2021-08-11 11:20:42 +02:00
parent 1a3b8bf0e7
commit dc87947cb3
3 changed files with 5 additions and 1 deletions

View File

@@ -755,6 +755,7 @@ ClangdClient::ClangdClient(Project *project, const Utils::FilePath &jsonDbDir)
caps.clearExperimental();
setClientCapabilities(caps);
setLocatorsEnabled(false);
setAutoRequestCodeActions(false); // clangd sends code actions inside diagnostics
setProgressTitleForToken(indexingToken(), tr("Parsing C/C++ Files (clangd)"));
setCurrentProject(project);

View File

@@ -1317,7 +1317,8 @@ void Client::handleDiagnostics(const PublishDiagnosticsParams &params)
m_diagnosticManager.setDiagnostics(uri, diagnostics, params.version());
if (LanguageClientManager::clientForUri(uri) == this) {
m_diagnosticManager.showDiagnostics(uri, m_documentVersions.value(uri.toFilePath()));
requestCodeActions(uri, diagnostics);
if (m_autoRequestCodeActions)
requestCodeActions(uri, diagnostics);
}
}

View File

@@ -128,6 +128,7 @@ public:
void setLocatorsEnabled(bool enabled) { m_locatorsEnabled = enabled; }
bool locatorsEnabled() const { return m_locatorsEnabled; }
void setAutoRequestCodeActions(bool enabled) { m_autoRequestCodeActions = enabled; }
// document synchronization
void setSupportedLanguage(const LanguageFilter &filter);
@@ -281,6 +282,7 @@ private:
QString m_serverVersion;
LanguageServerProtocol::SymbolStringifier m_symbolStringifier;
bool m_locatorsEnabled = true;
bool m_autoRequestCodeActions = true;
};
} // namespace LanguageClient