summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/psi/impl
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/psi/impl')
-rw-r--r--platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndexImpl.java29
-rw-r--r--platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemeImpl.java5
-rw-r--r--platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemesImpl.java3
3 files changed, 33 insertions, 4 deletions
diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndexImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndexImpl.java
index 537d997e5a50..1773a260a706 100644
--- a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndexImpl.java
+++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/id/IdIndexImpl.java
@@ -15,6 +15,9 @@
*/
package com.intellij.psi.impl.cache.impl.id;
+import com.intellij.openapi.fileTypes.FileType;
+import com.intellij.openapi.fileTypes.FileTypeRegistry;
+import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.ThreadLocalCachedIntArray;
import com.intellij.util.indexing.CustomInputsIndexFileBasedIndexExtension;
import com.intellij.util.io.DataExternalizer;
@@ -27,9 +30,35 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Comparator;
public class IdIndexImpl extends IdIndex implements CustomInputsIndexFileBasedIndexExtension<IdIndexEntry> {
private static final ThreadLocalCachedIntArray spareBufferLocal = new ThreadLocalCachedIntArray();
+ private final FileTypeRegistry myFileTypeManager;
+
+ public IdIndexImpl(FileTypeRegistry manager) {
+ myFileTypeManager = manager;
+ }
+
+ @Override
+ public int getVersion() {
+ FileType[] types = myFileTypeManager.getRegisteredFileTypes();
+ Arrays.sort(types, new Comparator<FileType>() {
+ @Override
+ public int compare(FileType o1, FileType o2) {
+ return Comparing.compare(o1.getName(), o2.getName());
+ }
+ });
+
+ int version = super.getVersion();
+ for(FileType fileType:types) {
+ if (!isIndexable(fileType)) continue;
+ FileTypeIdIndexer indexer = IdIndexers.INSTANCE.forFileType(fileType);
+ if (indexer == null) continue;
+ version = version * 31 + (indexer.getVersion() ^ indexer.getClass().getName().hashCode());
+ }
+ return version;
+ }
@NotNull
@Override
diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemeImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemeImpl.java
index 99320b44c5e6..59f3767c3a3b 100644
--- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemeImpl.java
+++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemeImpl.java
@@ -161,12 +161,11 @@ public class CodeStyleSchemeImpl implements JDOMExternalizable, CodeStyleScheme,
}
}
- public Document saveToDocument() throws WriteExternalException {
+ public Element saveToDocument() throws WriteExternalException {
Element newElement = new Element(CODE_SCHEME);
newElement.setAttribute(NAME, getName());
writeExternal(newElement);
-
- return new Document(newElement);
+ return newElement;
}
@Override
diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemesImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemesImpl.java
index b12dee17e9fd..87914f151df3 100644
--- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemesImpl.java
+++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleSchemesImpl.java
@@ -29,6 +29,7 @@ import com.intellij.psi.codeStyle.CodeStyleScheme;
import com.intellij.psi.codeStyle.CodeStyleSchemes;
import org.jdom.Document;
import org.jdom.JDOMException;
+import org.jdom.Parent;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -57,7 +58,7 @@ public abstract class CodeStyleSchemesImpl extends CodeStyleSchemes implements E
}
@Override
- public Document writeScheme(@NotNull final CodeStyleSchemeImpl scheme) throws WriteExternalException {
+ public Parent writeScheme(@NotNull final CodeStyleSchemeImpl scheme) throws WriteExternalException {
return scheme.saveToDocument();
}