diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-01-31 13:10:28 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-02-01 11:02:53 +0000 |
commit | 8b63dfccc64ecfa514a05b868142e91a7e3c94d2 (patch) | |
tree | 79a747d1b9d4072b8453a4b586766b8200b41008 /src/plugins/cppeditor/cppquickfixassistant.cpp | |
parent | 116b498b342b3c2194bd864417c360808495fb13 (diff) | |
download | qt-creator-8b63dfccc64ecfa514a05b868142e91a7e3c94d2.tar.gz |
ClangCodeModel: Make clangd refactoring actions available
Introduce an assist processor that merges our built-in quickfixes with
refactoring actions from clangd ("tweaks").
For now, we make it clear which ones are coming from clangd, and we do
not filter duplicate functionality. In the future, we might want to
disable redundant built-in actions if clangd is enabled for the
respective file.
Change-Id: I04842132798c8635dfddf8cfc98cc7a6313fac09
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cppeditor/cppquickfixassistant.cpp')
-rw-r--r-- | src/plugins/cppeditor/cppquickfixassistant.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/plugins/cppeditor/cppquickfixassistant.cpp b/src/plugins/cppeditor/cppquickfixassistant.cpp index f254abc8df..9d5d2271a6 100644 --- a/src/plugins/cppeditor/cppquickfixassistant.cpp +++ b/src/plugins/cppeditor/cppquickfixassistant.cpp @@ -53,14 +53,8 @@ class CppQuickFixAssistProcessor : public IAssistProcessor { IAssistProposal *perform(const AssistInterface *interface) override { - QSharedPointer<const AssistInterface> assistInterface(interface); - auto cppInterface = assistInterface.staticCast<const CppQuickFixInterface>(); - - QuickFixOperations quickFixes; - for (CppQuickFixFactory *factory : CppQuickFixFactory::cppQuickFixFactories()) - factory->match(*cppInterface, quickFixes); - - return GenericProposal::createProposal(interface, quickFixes); + QSharedPointer<const AssistInterface> dummy(interface); // FIXME: Surely this cannot be our way of doing memory management??? + return GenericProposal::createProposal(interface, quickFixOperations(interface)); } }; @@ -137,5 +131,15 @@ bool CppQuickFixInterface::isCursorOn(const AST *ast) const return currentFile()->isCursorOn(ast); } +QuickFixOperations quickFixOperations(const TextEditor::AssistInterface *interface) +{ + const auto cppInterface = dynamic_cast<const CppQuickFixInterface *>(interface); + QTC_ASSERT(cppInterface, return {}); + QuickFixOperations quickFixes; + for (CppQuickFixFactory *factory : CppQuickFixFactory::cppQuickFixFactories()) + factory->match(*cppInterface, quickFixes); + return quickFixes; +} + } // namespace Internal } // namespace CppEditor |