From c8e17815fe0b0e3c0271b6dd4c4b689f7fb9f7cf Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 17 Jun 2010 15:47:16 +0400 Subject: [PATCH] fixed some cases of file references renaming added find usages to django templates(PY-1081) added navigation to files --- .../intellij/util/indexing/FileContent.java | 46 +++++++++++++++---- .../ide/highlighter/HtmlFileType.java | 7 ++- .../com/intellij/xml/XmlFileTypeFactory.java | 2 +- 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileContent.java b/platform/lang-impl/src/com/intellij/util/indexing/FileContent.java index 7d9b3c583f9d..d351b9df37ae 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileContent.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileContent.java @@ -36,8 +36,8 @@ import java.nio.charset.Charset; /** * @author Eugene Zhuravlev -* Date: Mar 28, 2008 -*/ + * Date: Mar 28, 2008 + */ public final class FileContent extends UserDataHolderBase { private final VirtualFile myFile; private final String fileName; @@ -67,7 +67,7 @@ public final class FileContent extends UserDataHolderBase { if (project == null) { project = ProjectManager.getInstance().getDefaultProject(); } - final Language language = ((LanguageFileType)getFileType()).getLanguage(); + final Language language = ((LanguageFileType)getFileTypeWithoutSubstitution()).getLanguage(); final Language substitutedLanguage = LanguageSubstitutors.INSTANCE.substituteLanguage(language, getFile(), project); psi = PsiFileFactory.getInstance(project).createFileFromText(getFileName(), substitutedLanguage, getContentAsText(), false, false); @@ -77,7 +77,7 @@ public final class FileContent extends UserDataHolderBase { return psi; } - public static class IllegalDataException extends RuntimeException{ + public static class IllegalDataException extends RuntimeException { public IllegalDataException(final String message) { super(message); } @@ -86,13 +86,13 @@ public final class FileContent extends UserDataHolderBase { super(message, cause); } } - + public FileContent(@NotNull final VirtualFile file, @NotNull final CharSequence contentAsText, final Charset charset) { this(file); myContentAsText = contentAsText; myCharset = charset; } - + public FileContent(@NotNull final VirtualFile file, @NotNull final byte[] content) { this(file); myContent = content; @@ -106,10 +106,40 @@ public final class FileContent extends UserDataHolderBase { fileName = file.getName(); } - public FileType getFileType() { + + + FileType substituteFileType(VirtualFile file, FileType fileType) { + Project project = getProject(); + return substituteFileType(file, fileType, project); + } + + public static FileType substituteFileType(VirtualFile file, FileType fileType, Project project) { + if (project == null) { + project = ProjectManager.getInstance().getDefaultProject(); + } + if (fileType instanceof LanguageFileType) { + final Language language = ((LanguageFileType)fileType).getLanguage(); + final Language substitutedLanguage = LanguageSubstitutors.INSTANCE.substituteLanguage(language, file, project); + if (substitutedLanguage != null) { + return substitutedLanguage.getAssociatedFileType(); + } + } + + return fileType; + } + + public FileType getSubstitutedFileType() { + return substituteFileType(myFile, myFileType); + } + + public FileType getFileTypeWithoutSubstitution() { return myFileType; } + public FileType getFileType() { + return getSubstitutedFileType(); + } + public VirtualFile getFile() { return myFile; } @@ -126,7 +156,7 @@ public final class FileContent extends UserDataHolderBase { if (myContent == null) { if (myContentAsText != null) { try { - myContent = myCharset != null? myContentAsText.toString().getBytes(myCharset.name()) : myContentAsText.toString().getBytes(); + myContent = myCharset != null ? myContentAsText.toString().getBytes(myCharset.name()) : myContentAsText.toString().getBytes(); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); diff --git a/xml/impl/src/com/intellij/ide/highlighter/HtmlFileType.java b/xml/impl/src/com/intellij/ide/highlighter/HtmlFileType.java index 89b93e95da12..9134b061f40d 100644 --- a/xml/impl/src/com/intellij/ide/highlighter/HtmlFileType.java +++ b/xml/impl/src/com/intellij/ide/highlighter/HtmlFileType.java @@ -36,10 +36,13 @@ public class HtmlFileType extends XmlLikeFileType { @NonNls public static final String DOT_DEFAULT_EXTENSION = ".html"; private static final Icon ICON = IconLoader.getIcon("/fileTypes/html.png"); - public HtmlFileType() { + public final static HtmlFileType INSTANCE = new HtmlFileType(); + + private HtmlFileType() { super(HTMLLanguage.INSTANCE); } - public HtmlFileType(Language language) { + + HtmlFileType(Language language) { super(language); } diff --git a/xml/impl/src/com/intellij/xml/XmlFileTypeFactory.java b/xml/impl/src/com/intellij/xml/XmlFileTypeFactory.java index 2426b6e4d05d..6d2765a7fb29 100644 --- a/xml/impl/src/com/intellij/xml/XmlFileTypeFactory.java +++ b/xml/impl/src/com/intellij/xml/XmlFileTypeFactory.java @@ -28,7 +28,7 @@ import org.jetbrains.annotations.NotNull; */ public class XmlFileTypeFactory extends FileTypeFactory { public void createFileTypes(final @NotNull FileTypeConsumer consumer) { - consumer.consume(new HtmlFileType(), "html;htm;sht;shtm;shtml"); + consumer.consume(HtmlFileType.INSTANCE, "html;htm;sht;shtm;shtml"); consumer.consume(XHtmlFileType.INSTANCE, "xhtml"); consumer.consume(new DTDFileType(), "dtd;ent;mod");