Django Templates in Javascript files
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Wed, 29 Sep 2010 13:53:58 +0000 (17:53 +0400)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Wed, 29 Sep 2010 17:24:20 +0000 (21:24 +0400)
platform/lang-impl/src/com/intellij/psi/stubs/StubUpdatingIndex.java
platform/platform-api/src/com/intellij/openapi/fileTypes/FileTypeManager.java
platform/platform-api/src/com/intellij/openapi/fileTypes/StdFileTypes.java

index f20b020e2681d24aa4491ab24c246fb9e79b4e26..e403b2cb302d7bea47644d9509e4209458146aab 100644 (file)
@@ -145,14 +145,23 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
         assert builder != null;
 
         data = builder.buildStubTree(inputData.getFile(), inputData.getContent(), inputData.getProject());
-      } else {
+      }
+      else {
         final LanguageFileType filetype = (LanguageFileType)fileType;
         Language l = filetype.getLanguage();
         final IFileElementType type = LanguageParserDefinitions.INSTANCE.forLanguage(l).getFileNodeType();
 
         PsiFile psi = inputData.getPsiFile();
 
-        data = ((IStubFileElementType)type).getBuilder().buildStubTree(psi);
+        if (type instanceof IStubFileElementType) {
+          data = ((IStubFileElementType)type).getBuilder().buildStubTree(psi);
+        }
+        else if (filetype instanceof SubstitutedFileType) {
+          SubstitutedFileType substituted = (SubstitutedFileType) filetype;
+          LanguageFileType original = (LanguageFileType)substituted.getOriginalFileType();
+          final IFileElementType originalType = LanguageParserDefinitions.INSTANCE.forLanguage(original.getLanguage()).getFileNodeType();
+          data = ((IStubFileElementType)originalType).getBuilder().buildStubTree(psi);
+        }
       }
 
       inputData.putUserData(stubElementKey, data);
@@ -195,7 +204,7 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
       }
       else if (fileType.isBinary()) {
         final BinaryFileStubBuilder builder = BinaryFileStubBuilders.INSTANCE.forFileType(fileType);
-        if (builder != null ) {
+        if (builder != null) {
           version += builder.getStubVersion();
         }
       }
@@ -204,7 +213,8 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
   }
 
   public UpdatableIndex<Integer, SerializedStubTree, FileContent> createIndexImplementation(final ID<Integer, SerializedStubTree> indexId,
-                                                                                            final FileBasedIndex owner, IndexStorage<Integer, SerializedStubTree> storage) {
+                                                                                            final FileBasedIndex owner,
+                                                                                            IndexStorage<Integer, SerializedStubTree> storage) {
     if (storage instanceof MemoryIndexStorage) {
       final MemoryIndexStorage<Integer, SerializedStubTree> memStorage = (MemoryIndexStorage<Integer, SerializedStubTree>)storage;
       memStorage.addBufferingStateListsner(new MemoryIndexStorage.BufferingStateListener() {
@@ -220,7 +230,10 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
     return new MyIndex(indexId, owner, storage, getIndexer());
   }
 
-  private static void updateStubIndices(final Collection<StubIndexKey> indexKeys, final int inputId, final Map<StubIndexKey, Map<Object, TIntArrayList>> oldStubTree, final Map<StubIndexKey, Map<Object, TIntArrayList>> newStubTree) {
+  private static void updateStubIndices(final Collection<StubIndexKey> indexKeys,
+                                        final int inputId,
+                                        final Map<StubIndexKey, Map<Object, TIntArrayList>> oldStubTree,
+                                        final Map<StubIndexKey, Map<Object, TIntArrayList>> newStubTree) {
     final StubIndexImpl stubIndex = (StubIndexImpl)StubIndex.getInstance();
     for (StubIndexKey key : indexKeys) {
       final Map<Object, TIntArrayList> oldMap = oldStubTree.get(key);
@@ -233,7 +246,8 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
     }
   }
 
-  private static Collection<StubIndexKey> getAffectedIndices(final Map<StubIndexKey, Map<Object, TIntArrayList>> oldStubTree, final Map<StubIndexKey, Map<Object, TIntArrayList>> newStubTree) {
+  private static Collection<StubIndexKey> getAffectedIndices(final Map<StubIndexKey, Map<Object, TIntArrayList>> oldStubTree,
+                                                             final Map<StubIndexKey, Map<Object, TIntArrayList>> newStubTree) {
     Set<StubIndexKey> allIndices = new HashSet<StubIndexKey>();
     allIndices.addAll(oldStubTree.keySet());
     allIndices.addAll(newStubTree.keySet());
@@ -243,7 +257,9 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
   private static class MyIndex extends MapReduceIndex<Integer, SerializedStubTree, FileContent> {
     private final StubIndexImpl myStubIndex;
 
-    public MyIndex(final ID<Integer, SerializedStubTree> indexId, final FileBasedIndex owner, final IndexStorage<Integer, SerializedStubTree> storage,
+    public MyIndex(final ID<Integer, SerializedStubTree> indexId,
+                   final FileBasedIndex owner,
+                   final IndexStorage<Integer, SerializedStubTree> storage,
                    final DataIndexer<Integer, SerializedStubTree, FileContent> indexer) {
       super(indexId, indexer, storage);
       myStubIndex = (StubIndexImpl)StubIndex.getInstance();
@@ -269,8 +285,10 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
       }
     }
 
-    protected void updateWithMap(final int inputId, final Map<Integer, SerializedStubTree> newData, Callable<Collection<Integer>> oldKeysGetter)
-        throws StorageException {
+    protected void updateWithMap(final int inputId,
+                                 final Map<Integer, SerializedStubTree> newData,
+                                 Callable<Collection<Integer>> oldKeysGetter)
+      throws StorageException {
 
       checkNameStorage();
       final Map<StubIndexKey, Map<Object, TIntArrayList>> newStubTree = getStubTree(newData);
@@ -296,7 +314,6 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
         finally {
           getWriteLock().unlock();
         }
-
       }
       finally {
         for (StubIndexKey key : allStubIndices) {
@@ -332,7 +349,8 @@ public class StubUpdatingIndex extends CustomImplementationFileBasedIndexExtensi
 
       IndexStorage<Integer, SerializedStubTree> indexStorage = myStorage;
       if (indexStorage instanceof MemoryIndexStorage) {
-        final MemoryIndexStorage<Integer, SerializedStubTree> memIndexStorage = (MemoryIndexStorage<Integer, SerializedStubTree>)indexStorage;
+        final MemoryIndexStorage<Integer, SerializedStubTree> memIndexStorage =
+          (MemoryIndexStorage<Integer, SerializedStubTree>)indexStorage;
         if (!memIndexStorage.isBufferingEnabled()) {
           // if buffering is not enabled, use backend storage to make sure
           // the returned stub tree contains no data corresponding to unsaved documents.
index 873acb6bbcc40acd800591c2b094287c4206b9c4..54e1672642246b3f7361d7908874db67aba35b54 100644 (file)
@@ -29,7 +29,7 @@ import java.util.List;
  * Manages the relationship between filenames and {@link FileType} instances.
  */
 
-public abstract class FileTypeManager{
+public abstract class FileTypeManager {
   private static class FileTypeManagerHolder {
     private static final FileTypeManager ourInstance = createFileTypeManager();
   }
@@ -74,8 +74,7 @@ public abstract class FileTypeManager{
    * @return The file type instance, or {@link FileTypes#UNKNOWN} if not found.
    */
   @NotNull
-  public abstract
-  FileType getFileTypeByFileName(@NotNull @NonNls String fileName);
+  public abstract FileType getFileTypeByFileName(@NotNull @NonNls String fileName);
 
   /**
    * Returns the file type for the specified file.
@@ -84,18 +83,17 @@ public abstract class FileTypeManager{
    * @return The file type instance.
    */
   @NotNull
-  public abstract
-  FileType getFileTypeByFile(@NotNull VirtualFile file);
+  public abstract FileType getFileTypeByFile(@NotNull VirtualFile file);
 
   /**
    * Returns the file type for the specified extension.
    * Note that a more general way of obtaining file type is with {@link #getFileTypeByFile(VirtualFile)}
+   *
    * @param extension The extension for which the file type is requested, not including the leading '.'.
    * @return The file type instance.
    */
   @NotNull
-  public abstract
-  FileType getFileTypeByExtension(@NonNls @NotNull String extension);
+  public abstract FileType getFileTypeByExtension(@NonNls @NotNull String extension);
 
   /**
    * Returns the list of all registered file types.
@@ -135,9 +133,8 @@ public abstract class FileTypeManager{
    * Adds a listener for receiving notifications about changes in the list of
    * registered file types.
    *
-   * @deprecated Subscribe to #FILE_TYPES on any message bus level.
-   *
    * @param listener The listener instance.
+   * @deprecated Subscribe to #FILE_TYPES on any message bus level.
    */
 
   public abstract void addFileTypeListener(@NotNull FileTypeListener listener);
@@ -145,10 +142,9 @@ public abstract class FileTypeManager{
   /**
    * Removes a listener for receiving notifications about changes in the list of
    * registered file types.
-
-   * @deprecated Subscribe to #FILE_TYPES on any message bus level.
    *
    * @param listener The listener instance.
+   * @deprecated Subscribe to #FILE_TYPES on any message bus level.
    */
 
   public abstract void removeFileTypeListener(@NotNull FileTypeListener listener);
@@ -219,7 +215,7 @@ public abstract class FileTypeManager{
       return new ExtensionFileNameMatcher(pattern.substring(2).toLowerCase());
     }
 
-    if (pattern.contains("*") ||  pattern.contains("?")) {
+    if (pattern.contains("*") || pattern.contains("?")) {
       return new WildcardFileNameMatcher(pattern);
     }
 
index c41a6c976f89fff144785f36b0588ec45f78899e..35a4f4790d316f8d7ed43f0e47e6943731bde84b 100644 (file)
@@ -27,10 +27,11 @@ public class StdFileTypes extends FileTypes {
   public static final LanguageFileType DTD = (LanguageFileType)FileTypeManager.getInstance().getStdFileType("DTD");
   public static final LanguageFileType HTML = (LanguageFileType)FileTypeManager.getInstance().getStdFileType("HTML");
   public static final LanguageFileType XHTML = (LanguageFileType)FileTypeManager.getInstance().getStdFileType("XHTML");
+  public static final LanguageFileType JS = (LanguageFileType)FileTypeManager.getInstance().getStdFileType("JavaScript");
   public static final LanguageFileType PROPERTIES = (LanguageFileType)FileTypeManager.getInstance().getStdFileType("Properties");
   public static final FileType GUI_DESIGNER_FORM = FileTypeManager.getInstance().getStdFileType("GUI_DESIGNER_FORM");
   public static final FileType IDEA_WORKSPACE = FileTypeManager.getInstance().getStdFileType("IDEA_WORKSPACE");
   public static final FileType IDEA_PROJECT = FileTypeManager.getInstance().getStdFileType("IDEA_PROJECT");
   public static final FileType IDEA_MODULE = FileTypeManager.getInstance().getStdFileType("IDEA_MODULE");
   public static final FileType PATCH = FileTypeManager.getInstance().getStdFileType("PATCH");
-}
\ No newline at end of file
+}