LanguageClient: Fix file path filter handling

Avoid sending files to a language server without a file path,
like temporary generated files.
Only allow this if the file matches the MIME type of the
language server.

Change-Id: Ibf71a7196c387a2c8bf345db24c0005ba8fbdfb1
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2019-06-24 15:06:12 +02:00
parent 64e842759b
commit d1c226d70b

View File

@@ -650,8 +650,8 @@ QString BaseSettingsWidget::name() const
LanguageFilter BaseSettingsWidget::filter() const
{
return {m_mimeTypes->text().split(filterSeparator),
m_filePattern->text().split(filterSeparator)};
return {m_mimeTypes->text().split(filterSeparator, QString::SkipEmptyParts),
m_filePattern->text().split(filterSeparator, QString::SkipEmptyParts)};
}
BaseSettings::StartBehavior BaseSettingsWidget::startupBehavior() const
@@ -784,10 +784,10 @@ QString StdIOSettingsWidget::arguments() const
bool LanguageFilter::isSupported(const Utils::FilePath &filePath, const QString &mimeType) const
{
if (mimeTypes.isEmpty() && filePattern.isEmpty())
return true;
if (mimeTypes.contains(mimeType))
return true;
if (filePattern.isEmpty() && filePath.isEmpty())
return mimeTypes.isEmpty();
auto regexps = Utils::transform(filePattern, [](const QString &pattern){
return QRegExp(pattern, Utils::HostOsInfo::fileNameCaseSensitivity(), QRegExp::Wildcard);
});