From 66488e1a18cea4e6dd84b8b2bf3a64eb670f1d44 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 12 Jun 2019 16:08:51 +0200 Subject: [PATCH] Allow specifying patterns when registering file types in plugin.xml (IDEA-CR-47980) GitOrigin-RevId: afc1dd7844ba0c7f03a64a234bdd99fde786f4a9 --- .../intellij/openapi/fileTypes/impl/FileTypeBean.java | 6 ++++++ .../openapi/fileTypes/impl/FileTypeManagerImpl.java | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeBean.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeBean.java index fb8b559e247b..62b6f21cccfc 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeBean.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeBean.java @@ -50,6 +50,12 @@ public class FileTypeBean extends AbstractExtensionPointBean { @Attribute("fileNames") public String fileNames; + /** + * Semicolon-separated list of patterns (strings containing ? and * characters) to be associated with the file type. + */ + @Attribute("patterns") + public String patterns; + /** * Semicolon-separated list of exact file names (case insensitive) to be associated with the file type. */ diff --git a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java index 701958a3fab1..373967a95a74 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.java @@ -61,6 +61,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import org.jetbrains.ide.PooledThreadExecutor; +import org.jetbrains.jps.model.fileTypes.FileNameMatcherFactory; import java.io.*; import java.lang.reflect.Field; @@ -351,9 +352,11 @@ public class FileTypeManagerImpl extends FileTypeManagerEx implements Persistent final List fileTypeBeans = EP_NAME.getExtensionList(); for (FileTypeBean bean : fileTypeBeans) { - bean.addMatchers(ContainerUtil.concat(parse(bean.extensions), - parse(bean.fileNames, (token) -> new ExactFileNameMatcher(token)), - parse(bean.fileNamesCaseInsensitive, (token) -> new ExactFileNameMatcher(token, true)))); + bean.addMatchers(ContainerUtil.concat( + parse(bean.extensions), + parse(bean.fileNames, (token) -> new ExactFileNameMatcher(token)), + parse(bean.fileNamesCaseInsensitive, (token) -> new ExactFileNameMatcher(token, true)), + parse(bean.patterns, (token) -> FileNameMatcherFactory.getInstance().createMatcher(token)))); } for (FileTypeBean bean : fileTypeBeans) {