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