Files
qt-creator/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.cpp
hjk efb93d1366 CMakeProjectManager: Remote-ify CMakeFileCompletionAssist implementation
Change-Id: I18aa3d23244dd6475657f43bc18ce83298e278bf
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
2023-09-14 11:27:09 +00:00

59 lines
1.6 KiB
C++

// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "cmakefilecompletionassist.h"
#include "cmakekitaspect.h"
#include "cmakeprojectconstants.h"
#include "cmaketool.h"
#include <projectexplorer/project.h>
#include <projectexplorer/projectmanager.h>
#include <projectexplorer/target.h>
#include <texteditor/codeassist/assistinterface.h>
using namespace TextEditor;
using namespace ProjectExplorer;
namespace CMakeProjectManager::Internal {
class CMakeFileCompletionAssist : public KeywordsCompletionAssistProcessor
{
public:
CMakeFileCompletionAssist();
IAssistProposal *performAsync() final;
};
CMakeFileCompletionAssist::CMakeFileCompletionAssist() :
KeywordsCompletionAssistProcessor(Keywords())
{
setSnippetGroup(Constants::CMAKE_SNIPPETS_GROUP_ID);
setDynamicCompletionFunction(&TextEditor::pathComplete);
}
IAssistProposal *CMakeFileCompletionAssist::performAsync()
{
Keywords kw;
const Utils::FilePath &filePath = interface()->filePath();
if (!filePath.isEmpty() && filePath.isFile()) {
Project *p = ProjectManager::projectForFile(filePath);
if (p && p->activeTarget()) {
CMakeTool *cmake = CMakeKitAspect::cmakeTool(p->activeTarget()->kit());
if (cmake && cmake->isValid())
kw = cmake->keywords();
}
}
setKeywords(kw);
return KeywordsCompletionAssistProcessor::performAsync();
}
IAssistProcessor *CMakeFileCompletionAssistProvider::createProcessor(const AssistInterface *) const
{
return new CMakeFileCompletionAssist;
}
} // CMakeProjectManager::Internal