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/";
|
return "prop_test/";
|
||||||
if (m_keywords.properties.contains(word))
|
if (m_keywords.properties.contains(word))
|
||||||
return "prop_gbl/";
|
return "prop_gbl/";
|
||||||
|
if (m_keywords.policies.contains(word))
|
||||||
|
return "policy/";
|
||||||
|
|
||||||
return "unknown/";
|
return "unknown/";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -264,6 +264,9 @@ IAssistProposal *CMakeFileCompletionAssist::performAsync()
|
|||||||
items.append(generateList(projectKeywords.variables, m_projectVariableIcon));
|
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")
|
if (functionName.contains("path") || functionName.contains("file")
|
||||||
|| functionName.contains("add_executable") || functionName.contains("add_library")
|
|| functionName.contains("add_executable") || functionName.contains("add_library")
|
||||||
|| functionName == "include" || functionName == "add_subdirectory"
|
|| functionName == "include" || functionName == "add_subdirectory"
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ public:
|
|||||||
QStringList m_testProperties;
|
QStringList m_testProperties;
|
||||||
QStringList m_includeStandardModules;
|
QStringList m_includeStandardModules;
|
||||||
QStringList m_findModules;
|
QStringList m_findModules;
|
||||||
|
QStringList m_policies;
|
||||||
CMakeTool::Version m_version;
|
CMakeTool::Version m_version;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -276,6 +277,11 @@ CMakeKeywords CMakeTool::keywords()
|
|||||||
Utils::sort(m_introspection->m_variables);
|
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();
|
parseSyntaxHighlightingXml();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,6 +297,7 @@ CMakeKeywords CMakeTool::keywords()
|
|||||||
keywords.testProperties = Utils::toSet(m_introspection->m_testProperties);
|
keywords.testProperties = Utils::toSet(m_introspection->m_testProperties);
|
||||||
keywords.includeStandardModules = Utils::toSet(m_introspection->m_includeStandardModules);
|
keywords.includeStandardModules = Utils::toSet(m_introspection->m_includeStandardModules);
|
||||||
keywords.findModules = Utils::toSet(m_introspection->m_findModules);
|
keywords.findModules = Utils::toSet(m_introspection->m_findModules);
|
||||||
|
keywords.policies = Utils::toSet(m_introspection->m_policies);
|
||||||
|
|
||||||
return keywords;
|
return keywords;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ struct CMAKE_EXPORT CMakeKeywords
|
|||||||
QSet<QString> testProperties;
|
QSet<QString> testProperties;
|
||||||
QSet<QString> includeStandardModules;
|
QSet<QString> includeStandardModules;
|
||||||
QSet<QString> findModules;
|
QSet<QString> findModules;
|
||||||
|
QSet<QString> policies;
|
||||||
QMap<QString, QStringList> functionArgs;
|
QMap<QString, QStringList> functionArgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user