From 0d6181521e12822159220de4e2fe51c07732535f Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 10 Apr 2014 14:25:17 +0200 Subject: [PATCH] versions for file type detectors + usage of them for file type index --- .../com/intellij/openapi/fileTypes/FileTypeRegistry.java | 2 ++ .../src/com/intellij/psi/search/FileTypeIndex.java | 6 ++++++ .../plugins/groovy/GroovyHashBangFileTypeDetector.java | 5 +++++ python/src/com/jetbrains/python/PyFileTypeDetector.java | 5 +++++ 4 files changed, 18 insertions(+) diff --git a/platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeRegistry.java b/platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeRegistry.java index e1a52796e1e9..2fd9e8b1a5e1 100644 --- a/platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeRegistry.java +++ b/platform/core-api/src/com/intellij/openapi/fileTypes/FileTypeRegistry.java @@ -102,5 +102,7 @@ public abstract class FileTypeRegistry { */ @Nullable FileType detect(@NotNull VirtualFile file, @NotNull ByteSequence firstBytes, @Nullable CharSequence firstCharsIfText); + + int getVersion(); } } diff --git a/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java b/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java index 94388d0d2558..850fc5a119c7 100644 --- a/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java +++ b/platform/indexing-impl/src/com/intellij/psi/search/FileTypeIndex.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.search; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.util.Comparing; @@ -87,6 +88,11 @@ public class FileTypeIndex extends ScalarIndexExtension for (FileType type : types) { version += type.getName().hashCode(); } + + version *= 31; + for (FileTypeRegistry.FileTypeDetector detector : Extensions.getExtensions(FileTypeRegistry.FileTypeDetector.EP_NAME)) { + version += detector.getVersion(); + } return version; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/GroovyHashBangFileTypeDetector.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/GroovyHashBangFileTypeDetector.java index 66dc63d6e1ff..e641ffc1cda6 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/GroovyHashBangFileTypeDetector.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/GroovyHashBangFileTypeDetector.java @@ -36,4 +36,9 @@ public class GroovyHashBangFileTypeDetector implements FileTypeRegistry.FileType return null; } + + @Override + public int getVersion() { + return 1; + } } diff --git a/python/src/com/jetbrains/python/PyFileTypeDetector.java b/python/src/com/jetbrains/python/PyFileTypeDetector.java index 9eaaf7ae7c5a..13506afe2f32 100644 --- a/python/src/com/jetbrains/python/PyFileTypeDetector.java +++ b/python/src/com/jetbrains/python/PyFileTypeDetector.java @@ -31,4 +31,9 @@ public class PyFileTypeDetector implements FileTypeRegistry.FileTypeDetector { public FileType detect(@NotNull VirtualFile file, @NotNull ByteSequence firstBytes, @Nullable CharSequence firstCharsIfText) { return FileUtil.isHashBangLine(firstCharsIfText, "python") ? PythonFileType.INSTANCE : null; } + + @Override + public int getVersion() { + return 1; + } }