MCPcopy Create free account
hub / github.com/KDE/kdevelop / language

Method language

kdevplatform/shell/languagecontroller.cpp:279–321  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

277}
278
279ILanguageSupport* LanguageController::language(const QString &name) const
280{
281 Q_D(const LanguageController);
282
283 QMutexLocker lock(&d->dataMutex);
284
285 if(d->m_cleanedUp)
286 return nullptr;
287
288 const auto languageIt = d->languages.constFind(name);
289 if (languageIt != d->languages.constEnd())
290 return *languageIt;
291
292 // temporary support for deprecated-in-5.1 "X-KDevelop-Language" as fallback
293 // remove in later version
294 const QString keys[2] = {
295 QStringLiteral("X-KDevelop-Languages"),
296 QStringLiteral("X-KDevelop-Language")
297 };
298 QList<IPlugin*> supports;
299 for (const auto& key : keys) {
300 QVariantMap constraints;
301 constraints.insert(key, name);
302 supports = Core::self()->pluginController()->allPluginsForExtension(KEY_ILanguageSupport(), constraints);
303 if (key == keys[1]) {
304 for (auto support : std::as_const(supports)) {
305 qCWarning(SHELL) << "Plugin" << Core::self()->pluginController()->pluginInfo(support).name() << " has deprecated (since 5.1) metadata key \"X-KDevelop-Language\", needs porting to: \"X-KDevelop-Languages\": ["<<name<<"]'";
306 }
307 }
308 if (!supports.isEmpty()) {
309 break;
310 }
311 }
312
313 if(!supports.isEmpty()) {
314 auto *languageSupport = supports[0]->extension<ILanguageSupport>();
315 if(languageSupport) {
316 const_cast<LanguageControllerPrivate*>(d)->addLanguageSupport(languageSupport);
317 return languageSupport;
318 }
319 }
320 return nullptr;
321}
322
323QList<ILanguageSupport*> LanguageController::languagesForUrl(const QUrl &url)
324{

Callers

nothing calls this directly

Calls 10

KEY_ILanguageSupportFunction · 0.85
constEndMethod · 0.80
pluginControllerMethod · 0.80
addLanguageSupportMethod · 0.80
constFindMethod · 0.45
insertMethod · 0.45
nameMethod · 0.45
pluginInfoMethod · 0.45
isEmptyMethod · 0.45

Tested by

no test coverage detected