forked from qt-creator/qt-creator
CMakePM: Add policy support for help and code completion
Change-Id: I82d291639fe890602bba61eded9d1dfd7d38ca41 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -78,6 +78,8 @@ void CMakeEditor::contextHelp(const HelpCallback &callback) const
|
||||
return "prop_test/";
|
||||
if (m_keywords.properties.contains(word))
|
||||
return "prop_gbl/";
|
||||
if (m_keywords.policies.contains(word))
|
||||
return "policy/";
|
||||
|
||||
return "unknown/";
|
||||
};
|
||||
|
||||
@@ -264,6 +264,9 @@ IAssistProposal *CMakeFileCompletionAssist::performAsync()
|
||||
items.append(generateList(projectKeywords.variables, m_projectVariableIcon));
|
||||
}
|
||||
|
||||
if (functionName == "if" || functionName == "elseif" || functionName == "cmake_policy")
|
||||
items.append(generateList(keywords.policies, m_variableIcon));
|
||||
|
||||
if (functionName.contains("path") || functionName.contains("file")
|
||||
|| functionName.contains("add_executable") || functionName.contains("add_library")
|
||||
|| functionName == "include" || functionName == "add_subdirectory"
|
||||
|
||||
@@ -100,6 +100,7 @@ public:
|
||||
QStringList m_testProperties;
|
||||
QStringList m_includeStandardModules;
|
||||
QStringList m_findModules;
|
||||
QStringList m_policies;
|
||||
CMakeTool::Version m_version;
|
||||
};
|
||||
|
||||
@@ -276,6 +277,11 @@ CMakeKeywords CMakeTool::keywords()
|
||||
Utils::sort(m_introspection->m_variables);
|
||||
}
|
||||
|
||||
runCMake(proc, {"--help-policy-list"}, 5);
|
||||
if (proc.result() == ProcessResult::FinishedWithSuccess)
|
||||
m_introspection->m_policies = Utils::filtered(proc.cleanedStdOut().split('\n'),
|
||||
std::not_fn(&QString::isEmpty));
|
||||
|
||||
parseSyntaxHighlightingXml();
|
||||
}
|
||||
|
||||
@@ -291,6 +297,7 @@ CMakeKeywords CMakeTool::keywords()
|
||||
keywords.testProperties = Utils::toSet(m_introspection->m_testProperties);
|
||||
keywords.includeStandardModules = Utils::toSet(m_introspection->m_includeStandardModules);
|
||||
keywords.findModules = Utils::toSet(m_introspection->m_findModules);
|
||||
keywords.policies = Utils::toSet(m_introspection->m_policies);
|
||||
|
||||
return keywords;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ struct CMAKE_EXPORT CMakeKeywords
|
||||
QSet<QString> testProperties;
|
||||
QSet<QString> includeStandardModules;
|
||||
QSet<QString> findModules;
|
||||
QSet<QString> policies;
|
||||
QMap<QString, QStringList> functionArgs;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user