diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index 8580bec1c398..6f56bc39b7f0 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -807,6 +807,9 @@ public class JavaDocInfoGenerator { " background-color: #eeeeee;" + " margin-bottom: 10px;" + " }" + + " p {" + + " margin: 5px 0;" + + " }" + " " + ""); } diff --git a/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java b/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java index 989ddf531e16..8708107450d3 100644 --- a/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java +++ b/platform/lang-api/src/com/intellij/psi/stubs/LightStubBuilder.java @@ -15,13 +15,14 @@ */ package com.intellij.psi.stubs; -import com.intellij.lang.FileASTNode; -import com.intellij.lang.LighterAST; -import com.intellij.lang.LighterASTNode; +import com.intellij.lang.*; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.psi.PsiFile; import com.intellij.psi.StubBuilder; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.tree.IFileElementType; import com.intellij.psi.tree.ILightStubFileElementType; import gnu.trove.TIntStack; @@ -34,15 +35,23 @@ public class LightStubBuilder implements StubBuilder { @Override public StubElement buildStubTree(final PsiFile file) { - final FileASTNode node = file.getNode(); - assert node != null; - - if (!(node.getElementType() instanceof ILightStubFileElementType)) { - LOG.error("File is not of ILightStubFileElementType: " + file); + final FileType fileType = file.getFileType(); + if (!(fileType instanceof LanguageFileType)) { + LOG.error("File is not of LanguageFileType: " + fileType + ", " + file); return null; } - final ILightStubFileElementType type = (ILightStubFileElementType)node.getElementType(); + final Language language = ((LanguageFileType)fileType).getLanguage(); + final IFileElementType contentType = LanguageParserDefinitions.INSTANCE.forLanguage(language).getFileNodeType(); + if (!(contentType instanceof ILightStubFileElementType)) { + LOG.error("File is not of ILightStubFileElementType: " + contentType + ", " + file); + return null; + } + + final FileASTNode node = file.getNode(); + assert node != null : file; + + final ILightStubFileElementType type = (ILightStubFileElementType)contentType; final LighterAST tree = new LighterAST(node.getCharTable(), type.parseContentsLight(node)); final StubElement rootStub = createStubForFile(file, tree); buildStubTree(tree, tree.getRoot(), rootStub); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java index 83e7544cdc50..d764365fce9f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationComponent.java @@ -21,6 +21,7 @@ import com.intellij.codeInsight.hint.ElementLocationUtil; import com.intellij.codeInsight.hint.HintManagerImpl; import com.intellij.codeInsight.hint.HintUtil; import com.intellij.ide.actions.ExternalJavaDocAction; +import com.intellij.ide.ui.UISettings; import com.intellij.lang.documentation.CompositeDocumentationProvider; import com.intellij.lang.documentation.DocumentationProvider; import com.intellij.lang.documentation.ExternalDocumentationHandler; @@ -132,6 +133,12 @@ public class DocumentationComponent extends JPanel implements Disposable { } super.processKeyEvent(e); } + + @Override + protected void paintComponent(Graphics g) { + UISettings.setupAntialiasing(g); + super.paintComponent(g); + } }; myText = ""; myEditorPane.setEditable(false); diff --git a/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java b/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java index 6a43ad6d5989..89a00b045a08 100644 --- a/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java +++ b/platform/lang-impl/src/com/intellij/psi/SingleRootFileViewProvider.java @@ -257,6 +257,11 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi return fileSizeIsGreaterThan(vFile, PersistentFS.MAX_INTELLISENSE_FILESIZE); } + public static boolean isTooLarge(final VirtualFile vFile, final long contentSize) { + if (Boolean.TRUE.equals(vFile.getUserData(ourNoSizeLimitKey))) return false; + return contentSize > PersistentFS.MAX_INTELLISENSE_FILESIZE; + } + private static boolean fileSizeIsGreaterThan(final VirtualFile vFile, final long maxInBytes) { if (vFile instanceof LightVirtualFile) { // This is optimization in order to avoid conversion of [large] file contents to bytes diff --git a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java index 2d5b574b611d..92ee5d5c2917 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java +++ b/platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndex.java @@ -1163,7 +1163,12 @@ public class FileBasedIndex implements ApplicationComponent { ProgressManager.getInstance().executeNonCancelableSection(new Runnable() { public void run() { try { - final FileContent newFc = new FileContent(vFile, content.getText(), vFile.getCharset()); + final String contentText = content.getText(); + if (isTooLarge(vFile, contentText.length())) { + return; + } + + final FileContent newFc = new FileContent(vFile, contentText, vFile.getCharset()); if (dominantContentFile != null) { dominantContentFile.putUserData(PsiFileImpl.BUILDING_STUB, true); @@ -1820,6 +1825,14 @@ public class FileBasedIndex implements ApplicationComponent { return false; } + private boolean isTooLarge(VirtualFile file, long contentSize) { + if (SingleRootFileViewProvider.isTooLarge(file, contentSize)) { + final FileType type = FileTypeManager.getInstance().getFileTypeByFile(file); + return !myNoLimitCheckTypes.contains(type); + } + return false; + } + public CollectingContentIterator createContentIterator() { return new UnindexedFilesFinder(); } diff --git a/platform/platform-api/src/com/intellij/openapi/project/DumbService.java b/platform/platform-api/src/com/intellij/openapi/project/DumbService.java index e9f1a4c8e80b..4afcf60bf410 100644 --- a/platform/platform-api/src/com/intellij/openapi/project/DumbService.java +++ b/platform/platform-api/src/com/intellij/openapi/project/DumbService.java @@ -54,6 +54,10 @@ public abstract class DumbService { */ public abstract boolean isDumb(); + public static boolean isDumb(Project project) { + return getInstance(project).isDumb(); + } + /** * Run the runnable when dumb mode ends * @param runnable runnable to run diff --git a/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java b/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java index 9bb2eb097e84..a4057fb99496 100644 --- a/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java +++ b/platform/platform-impl/src/com/intellij/ide/RecentProjectsManagerBase.java @@ -225,7 +225,7 @@ public abstract class RecentProjectsManagerBase implements PersistentStateCompon String _text = projectPath; final String projectName = getProjectName(projectPath); if (projectName != null) { - _text = String.format("%s - %s", projectPath, projectName); + _text = String.format("%s [%s]", projectPath, projectName); } final Presentation presentation = getTemplatePresentation(); diff --git a/platform/util/src/com/intellij/execution/rmi/RemoteServer.java b/platform/util/src/com/intellij/execution/rmi/RemoteServer.java index 9c512bbdf7dc..1e6a891ded46 100644 --- a/platform/util/src/com/intellij/execution/rmi/RemoteServer.java +++ b/platform/util/src/com/intellij/execution/rmi/RemoteServer.java @@ -23,9 +23,16 @@ import java.rmi.server.UnicastRemoteObject; import java.util.Random; public class RemoteServer { + private static Remote ourRemote; + private static Remote ourStub; + protected static void start(Remote remote) throws Exception { setupRMI(); + if (ourRemote != null) throw new AssertionError("Already started"); + + ourRemote = remote; + Registry registry; int port = 0; for (Random random = new Random(); ;) { @@ -39,9 +46,9 @@ public class RemoteServer { } } try { - final Remote stub = UnicastRemoteObject.exportObject(remote, 0); - final String name = remote.getClass().getSimpleName() + Integer.toHexString(stub.hashCode()); - registry.bind(name, stub); + ourStub = UnicastRemoteObject.exportObject(ourRemote, 0); + final String name = remote.getClass().getSimpleName() + Integer.toHexString(ourStub.hashCode()); + registry.bind(name, ourStub); System.out.println("Port/ID:" + port + "/" + name); Object lock = new Object(); diff --git a/platform/util/src/com/intellij/util/io/PersistentEnumerator.java b/platform/util/src/com/intellij/util/io/PersistentEnumerator.java index faedb8fee8d8..a71119aa2758 100644 --- a/platform/util/src/com/intellij/util/io/PersistentEnumerator.java +++ b/platform/util/src/com/intellij/util/io/PersistentEnumerator.java @@ -358,6 +358,7 @@ public class PersistentEnumerator implements Forceable { } catch (Throwable e) { markCorrupted(); + LOG.error(e); throw new RuntimeException(e); } } diff --git a/plugins/devkit/src/dom/impl/IdeaPluginConverter.java b/plugins/devkit/src/dom/impl/IdeaPluginConverter.java index 766603b59f51..1f222c9c57c9 100644 --- a/plugins/devkit/src/dom/impl/IdeaPluginConverter.java +++ b/plugins/devkit/src/dom/impl/IdeaPluginConverter.java @@ -15,6 +15,7 @@ */ package org.jetbrains.idea.devkit.dom.impl; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.xml.XmlFile; @@ -33,6 +34,7 @@ import org.jetbrains.idea.devkit.dom.IdeaPlugin; import org.jetbrains.idea.devkit.dom.PluginModule; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -66,6 +68,7 @@ public class IdeaPluginConverter extends ResolvingConverter { public static Collection collectAllVisiblePlugins(@NotNull XmlFile xmlFile) { Project project = xmlFile.getProject(); + if (DumbService.isDumb(project)) return Collections.emptyList(); GlobalSearchScope scope = GlobalSearchScope.allScope(project); List> files = DomService.getInstance().getFileElements(IdeaPlugin.class, project, scope); return ContainerUtil.map(files, new Function, IdeaPlugin>() { diff --git a/plugins/relaxng/src/org/intellij/plugins/relaxNG/references/PrefixReferenceProvider.java b/plugins/relaxng/src/org/intellij/plugins/relaxNG/references/PrefixReferenceProvider.java index 6252728de819..27015b9ef39a 100644 --- a/plugins/relaxng/src/org/intellij/plugins/relaxNG/references/PrefixReferenceProvider.java +++ b/plugins/relaxng/src/org/intellij/plugins/relaxNG/references/PrefixReferenceProvider.java @@ -26,8 +26,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; +import com.intellij.psi.PsiReferenceProvider; import com.intellij.psi.XmlElementFactory; -import com.intellij.psi.impl.source.resolve.reference.PsiReferenceProviderBase; import com.intellij.psi.impl.source.resolve.reference.impl.providers.BasicAttributeValueReference; import com.intellij.psi.impl.source.xml.SchemaPrefix; import com.intellij.psi.util.PsiTreeUtil; @@ -44,7 +44,7 @@ import org.jetbrains.annotations.Nullable; * User: sweinreuter * Date: 24.07.2007 */ -public class PrefixReferenceProvider extends PsiReferenceProviderBase { +public class PrefixReferenceProvider extends PsiReferenceProvider { private static final Logger LOG = Logger.getInstance("#org.intellij.plugins.relaxNG.references.PrefixReferenceProvider"); @NotNull @@ -102,8 +102,8 @@ public class PrefixReferenceProvider extends PsiReferenceProviderBase { final String[] name = value.split(":"); final XmlTag tag = factory.createTagFromText("<" + (name.length > 1 ? name[1] : value) + " />", XMLLanguage.INSTANCE); - QuickFixAction.registerQuickFixAction(info, - new CreateNSDeclarationIntentionFix(tag, reference.getCanonicalText())); + CreateNSDeclarationIntentionFix fix = CreateNSDeclarationIntentionFix.createFix(tag, reference.getCanonicalText()); + QuickFixAction.registerQuickFixAction(info, fix); } catch (Throwable e) { LOG.error(e); } diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/context/XsltNamespaceContext.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/context/XsltNamespaceContext.java index e980e22ef709..3219be2807c7 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/context/XsltNamespaceContext.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/context/XsltNamespaceContext.java @@ -135,7 +135,7 @@ public class XsltNamespaceContext implements NamespaceContext { // TODO: verify API public MyCreateNSDeclarationAction(XmlElement xmlElement, String prefix, XmlFile xmlFile) { - super(xmlElement, prefix); + super(xmlElement, prefix, xmlFile); myXmlFile = xmlFile; } diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java index cd585dc71aba..5b4ccb4e3fb8 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/CreateNSDeclarationIntentionFix.java @@ -77,16 +77,24 @@ public class CreateNSDeclarationIntentionFix implements HintAction, LocalQuickFi private final XmlFile myFile; private final XmlToken myToken; - public CreateNSDeclarationIntentionFix(@NotNull final PsiElement element, - @NotNull final String namespacePrefix - ) { - this(element, namespacePrefix, null); + @Nullable + public static CreateNSDeclarationIntentionFix createFix(@NotNull final PsiElement element, @NotNull final String namespacePrefix) { + PsiFile file = element.getContainingFile(); + return file instanceof XmlFile ? new CreateNSDeclarationIntentionFix(element, namespacePrefix, (XmlFile)file) : null; } - public CreateNSDeclarationIntentionFix(final PsiElement element, final String namespacePrefix, final XmlToken token) { + protected CreateNSDeclarationIntentionFix(@NotNull final PsiElement element, + @NotNull final String namespacePrefix, XmlFile containingFile) { + this(element, namespacePrefix, null, containingFile); + } + + public CreateNSDeclarationIntentionFix(final PsiElement element, + final String namespacePrefix, + final XmlToken token, + XmlFile containingFile) { myNamespacePrefix = namespacePrefix; myElement = element; - myFile = (XmlFile)element.getContainingFile(); + myFile = containingFile; myToken = token; } diff --git a/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlUnboundNsPrefixInspection.java b/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlUnboundNsPrefixInspection.java index ff5170b18c39..0af2637080d3 100644 --- a/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlUnboundNsPrefixInspection.java +++ b/xml/impl/src/com/intellij/codeInsight/daemon/impl/analysis/XmlUnboundNsPrefixInspection.java @@ -127,7 +127,8 @@ public class XmlUnboundNsPrefixInspection extends XmlSuppressableInspectionTool final XmlTag tag = (XmlTag)element; if (!XmlUtil.JSP_URI.equals(tag.getNamespace())) { reportTagProblem(tag, localizedMessage, null, ProblemHighlightType.INFORMATION, - isOnTheFly ? new CreateNSDeclarationIntentionFix(context, namespacePrefix, token):null, + isOnTheFly ? new CreateNSDeclarationIntentionFix(context, namespacePrefix, token, + (XmlFile)context.getContainingFile()):null, holder); } return; @@ -138,7 +139,8 @@ public class XmlUnboundNsPrefixInspection extends XmlSuppressableInspectionTool final HighlightInfoType infoType = extension.getHighlightInfoType(containingFile); final ProblemHighlightType highlightType = infoType == HighlightInfoType.ERROR ? ProblemHighlightType.ERROR : ProblemHighlightType.LIKE_UNKNOWN_SYMBOL; if (element instanceof XmlTag) { - final CreateNSDeclarationIntentionFix fix = isOnTheFly ? new CreateNSDeclarationIntentionFix(context, namespacePrefix, token):null; + final CreateNSDeclarationIntentionFix fix = isOnTheFly ? new CreateNSDeclarationIntentionFix(context, namespacePrefix, token, + (XmlFile)context.getContainingFile()):null; reportTagProblem(element, localizedMessage, range, highlightType, fix, holder); } else { holder.registerProblem(element, localizedMessage, highlightType, range); diff --git a/xml/impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownTagInspection.java b/xml/impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownTagInspection.java index 50d9d35baa4d..1ee738892d22 100644 --- a/xml/impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownTagInspection.java +++ b/xml/impl/src/com/intellij/codeInspection/htmlInspections/HtmlUnknownTagInspection.java @@ -29,6 +29,7 @@ import com.intellij.psi.html.HtmlTag; import com.intellij.psi.xml.XmlTag; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.FieldPanel; +import com.intellij.util.containers.ContainerUtil; import com.intellij.xml.XmlBundle; import com.intellij.xml.XmlElementDescriptor; import com.intellij.xml.impl.schema.AnyXmlElementDescriptor; @@ -207,12 +208,13 @@ public class HtmlUnknownTagInspection extends HtmlLocalInspectionTool { final String message = XmlErrorMessages.message("unknown.html.tag", name); final PsiElement startTagName = XmlTagUtil.getStartTagNameElement(tag); + assert startTagName != null; final PsiElement endTagName = XmlTagUtil.getEndTagNameElement(tag); List quickfixes = new ArrayList(); quickfixes.add(action); if (isOnTheFly) { - quickfixes.add(new CreateNSDeclarationIntentionFix(startTagName, "")); + ContainerUtil.addIfNotNull(CreateNSDeclarationIntentionFix.createFix(startTagName, ""), quickfixes); } if (HtmlUtil.isHtml5Tag(name) && !HtmlUtil.hasNonHtml5Doctype(tag)) { quickfixes.add(new SwitchToHtml5Action());