diff --git a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java index 8404882c9e7d..89cd2bd89ef5 100644 --- a/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java +++ b/java/debugger/impl/src/com/intellij/debugger/impl/DebuggerUtilsEx.java @@ -50,6 +50,7 @@ import com.intellij.ui.classFilter.ClassFilter; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import com.intellij.xdebugger.XSourcePosition; +import com.intellij.xdebugger.frame.XValueNode; import com.intellij.xdebugger.impl.XSourcePositionImpl; import com.sun.jdi.*; import com.sun.jdi.event.Event; @@ -66,8 +67,6 @@ import java.util.regex.PatternSyntaxException; public abstract class DebuggerUtilsEx extends DebuggerUtils { private static final Logger LOG = Logger.getInstance("#com.intellij.debugger.impl.DebuggerUtilsEx"); - private static final int MAX_LABEL_SIZE = 255; - /** * @param context * @return all CodeFragmentFactoryProviders that provide code fragment factories suitable in the context given @@ -594,8 +593,9 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { } public static String truncateString(final String str) { - if (str.length() > MAX_LABEL_SIZE) { - return str.substring(0, MAX_LABEL_SIZE) + "..."; + // leave a small gap over XValueNode.MAX_VALUE_LENGTH to detect oversize + if (str.length() > XValueNode.MAX_VALUE_LENGTH + 5) { + return str.substring(0, XValueNode.MAX_VALUE_LENGTH + 5); } return str; } @@ -633,17 +633,23 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { @Nullable public static XSourcePosition toXSourcePosition(@NotNull SourcePosition position) { - if (position.getFile().getVirtualFile() == null) { + VirtualFile file = position.getFile().getVirtualFile(); + if (file == null) { + file = position.getFile().getOriginalFile().getVirtualFile(); + } + if (file == null) { return null; } - return new JavaXSourcePosition(position); + return new JavaXSourcePosition(position, file); } private static class JavaXSourcePosition implements XSourcePosition { private final SourcePosition mySourcePosition; + @NotNull private final VirtualFile myFile; - public JavaXSourcePosition(@NotNull SourcePosition sourcePosition) { + public JavaXSourcePosition(@NotNull SourcePosition sourcePosition, @NotNull VirtualFile file) { mySourcePosition = sourcePosition; + myFile = file; } @Override @@ -659,7 +665,7 @@ public abstract class DebuggerUtilsEx extends DebuggerUtils { @NotNull @Override public VirtualFile getFile() { - return mySourcePosition.getFile().getVirtualFile(); + return myFile; } @NotNull diff --git a/java/testFramework/src/com/intellij/testFramework/InspectionTestCase.java b/java/testFramework/src/com/intellij/testFramework/InspectionTestCase.java index ba0c559dbad2..7a05b5f2ace2 100644 --- a/java/testFramework/src/com/intellij/testFramework/InspectionTestCase.java +++ b/java/testFramework/src/com/intellij/testFramework/InspectionTestCase.java @@ -42,6 +42,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiManager; import com.intellij.psi.util.PsiUtilCore; import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; +import com.intellij.testFramework.fixtures.impl.GlobalInspectionContextForTests; import com.intellij.util.ArrayUtil; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -145,7 +146,7 @@ public abstract class InspectionTestCase extends PsiTestCase { InspectionManagerEx inspectionManager = (InspectionManagerEx)InspectionManager.getInstance(getProject()); InspectionToolWrapper[] toolWrappers = runDeadCodeFirst ? new InspectionToolWrapper []{getUnusedDeclarationWrapper(), toolWrapper} : new InspectionToolWrapper []{toolWrapper}; toolWrappers = ArrayUtil.mergeArrays(toolWrappers, additional); - final GlobalInspectionContextImpl globalContext = + final GlobalInspectionContextForTests globalContext = CodeInsightTestFixtureImpl.createGlobalContextForTool(scope, getProject(), inspectionManager, toolWrappers); InspectionTestUtil.runTool(toolWrapper, scope, globalContext); diff --git a/lib/libpty/readme.txt b/lib/libpty/readme.txt index b0641239ee84..c7d91b0105fb 100644 --- a/lib/libpty/readme.txt +++ b/lib/libpty/readme.txt @@ -1,3 +1,5 @@ * pty4j - Java PTY implementation - https://github.com/traff/pty4j +* cyglaunch.exe is a part of pty4j library licensed under Eclipse Public License and is linked with Cygwin™ according to Cygwin™ Open Source + Licensing Exception (see https://cygwin.com/licensing.html) * purejavacomm - we use forked version that fixes JNA and YourKit Profiler incompatibility - https://github.com/traff/purejavacomm * libwinpty.dll and winpty-agent.exe - Windows PTY native implementation used by pty4j, we use forked version from https://github.com/traff/winpty \ No newline at end of file diff --git a/lib/libpty/win/x86_64/cyglaunch.exe b/lib/libpty/win/x86_64/cyglaunch.exe new file mode 100755 index 000000000000..b5a5b5011f62 Binary files /dev/null and b/lib/libpty/win/x86_64/cyglaunch.exe differ diff --git a/platform/core-impl/src/com/intellij/diagnostic/PerformanceWatcher.java b/platform/core-impl/src/com/intellij/diagnostic/PerformanceWatcher.java index 021b45e97023..2d68aa5056d6 100644 --- a/platform/core-impl/src/com/intellij/diagnostic/PerformanceWatcher.java +++ b/platform/core-impl/src/com/intellij/diagnostic/PerformanceWatcher.java @@ -175,7 +175,7 @@ public class PerformanceWatcher implements ApplicationComponent { //System.out.println("EDT is not responding at " + myPrintDateFormat.format(new Date())); myCurHangLogDir = new File(mySessionLogDir, myDateFormat.format(new Date())); } - dumpThreads(false); + dumpThreads("", false); } } else { @@ -197,7 +197,7 @@ public class PerformanceWatcher implements ApplicationComponent { } private String getLogDirForHang() { - StringBuilder name = new StringBuilder(myCurHangLogDir.getName()); + StringBuilder name = new StringBuilder("freeze-" + myCurHangLogDir.getName()); name.append("-").append(myUnresponsiveDuration); if (myStacktraceCommonPart != null && !myStacktraceCommonPart.isEmpty()) { final StackTraceElement element = myStacktraceCommonPart.get(0); @@ -206,13 +206,13 @@ public class PerformanceWatcher implements ApplicationComponent { return name.toString(); } - public void dumpThreads(boolean millis) { + public void dumpThreads(String pathPrefix, boolean millis) { if (shallNotWatch()) return; final String suffix = millis ? "-" + String.valueOf(System.currentTimeMillis()) : ""; myCurHangLogDir.mkdirs(); - File f = new File(myCurHangLogDir, "threadDump-" + myDateFormat.format(new Date()) + suffix + ".txt"); + File f = new File(myCurHangLogDir, pathPrefix + "threadDump-" + myDateFormat.format(new Date()) + suffix + ".txt"); FileOutputStream fos; try { fos = new FileOutputStream(f); diff --git a/platform/core-impl/src/org/jetbrains/ide/PooledThreadExecutor.java b/platform/core-impl/src/org/jetbrains/ide/PooledThreadExecutor.java index 914df3e29486..d75aaf0216f8 100644 --- a/platform/core-impl/src/org/jetbrains/ide/PooledThreadExecutor.java +++ b/platform/core-impl/src/org/jetbrains/ide/PooledThreadExecutor.java @@ -65,7 +65,7 @@ public final class PooledThreadExecutor { }; if (ApplicationInfoImpl.getShadowInstance().isEAP() && count > ourReasonableThreadPoolSize) { LOG.info("Not enough pooled threads; dumping threads into a file"); - PerformanceWatcher.getInstance().dumpThreads(true); + PerformanceWatcher.getInstance().dumpThreads("newPooledThread/", true); } thread.setPriority(Thread.NORM_PRIORITY - 1); return thread; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index 973e2d11b2c9..5daf8d480197 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -337,7 +337,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement } if (Registry.is("dump.threads.on.empty.lookup") && myLookup.isCalculating() && myLookup.getItems().isEmpty()) { - PerformanceWatcher.getInstance().dumpThreads(true); + PerformanceWatcher.getInstance().dumpThreads("emptyLookup/", true); } if (!myLookup.showLookup()) { diff --git a/platform/lang-impl/src/com/intellij/execution/actions/EOFAction.java b/platform/lang-impl/src/com/intellij/execution/actions/EOFAction.java index 53a49d0d88c7..51ed3a8d4195 100644 --- a/platform/lang-impl/src/com/intellij/execution/actions/EOFAction.java +++ b/platform/lang-impl/src/com/intellij/execution/actions/EOFAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,8 @@ package com.intellij.execution.actions; import com.intellij.execution.process.ProcessHandler; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.DumbAwareAction; import org.jetbrains.annotations.NonNls; @@ -32,7 +34,9 @@ public class EOFAction extends DumbAwareAction implements AnAction.TransparentUp @Override public void update(AnActionEvent e) { - e.getPresentation().setEnabledAndVisible(StopAction.getHandler(e.getDataContext()) != null); + e.getPresentation().setEnabledAndVisible(e.getData(LangDataKeys.CONSOLE_VIEW) != null + && e.getData(CommonDataKeys.EDITOR) != null + && StopAction.getHandler(e.getDataContext()) != null); } @Override diff --git a/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java b/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java index d8f8a03bac64..82f578e73e52 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java +++ b/platform/lang-impl/src/com/intellij/execution/console/RunIdeConsoleAction.java @@ -51,10 +51,7 @@ import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.script.ScriptContext; -import javax.script.ScriptEngine; -import javax.script.ScriptEngineFactory; -import javax.script.ScriptEngineManager; +import javax.script.*; import javax.swing.*; import java.awt.*; import java.io.IOException; @@ -171,6 +168,7 @@ public class RunIdeConsoleAction extends DumbAwareAction { ConsoleViewImpl consoleView = (ConsoleViewImpl)descriptor.getExecutionConsole(); try { class IDE { + private final Map bindings = ContainerUtil.newConcurrentMap(); public final Application application = ApplicationManager.getApplication(); public final Project project = project_; public void print(Object o) { @@ -179,12 +177,19 @@ public class RunIdeConsoleAction extends DumbAwareAction { public void error(Object o) { printInContent(descriptor, o, ConsoleViewContentType.ERROR_OUTPUT); } + public Object put(Object key, Object value) { + return value == null ? bindings.remove(key) : bindings.put(key, value); + } + public Object get(Object key) { + return bindings.get(key); + } } //myHistoryController.getModel().addToHistory(command); consoleView.print("> " + command, ConsoleViewContentType.USER_INPUT); consoleView.print("\n", ConsoleViewContentType.USER_INPUT); - engine.getBindings(ScriptContext.ENGINE_SCOPE).put("IDE", new IDE()); + Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE); + if (bindings.get("IDE") == null) bindings.put("IDE", new IDE()); Object o = engine.eval(profile == null ? command : profile + "\n" + command); consoleView.print("=> " + o, ConsoleViewContentType.NORMAL_OUTPUT); consoleView.print("\n", ConsoleViewContentType.NORMAL_OUTPUT); @@ -220,11 +225,12 @@ public class RunIdeConsoleAction extends DumbAwareAction { ConsoleView consoleView = TextConsoleBuilderFactory.getInstance().createBuilder(project).getConsole(); DefaultActionGroup toolbarActions = new DefaultActionGroup(); - JComponent consoleComponent = new JPanel(new BorderLayout()); - consoleComponent.add(consoleView.getComponent(), BorderLayout.CENTER); - consoleComponent.add(ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, toolbarActions, false).getComponent(), - BorderLayout.WEST); - final RunContentDescriptor descriptor = new RunContentDescriptor(consoleView, null, consoleComponent, file.getName()) { + JComponent panel = new JPanel(new BorderLayout()); + panel.add(consoleView.getComponent(), BorderLayout.CENTER); + ActionToolbar toolbar = ActionManager.getInstance().createActionToolbar(ActionPlaces.UNKNOWN, toolbarActions, false); + toolbar.setTargetComponent(consoleView.getComponent()); + panel.add(toolbar.getComponent(), BorderLayout.WEST); + final RunContentDescriptor descriptor = new RunContentDescriptor(consoleView, null, panel, file.getName()) { @Override public boolean isContentReuseProhibited() { return true; @@ -245,10 +251,10 @@ public class RunIdeConsoleAction extends DumbAwareAction { // rerunRunnable.run(); // } //}); - toolbarActions.add(new CloseAction(executor, descriptor, project)); for (AnAction action : consoleView.createConsoleActions()) { toolbarActions.add(action); } + toolbarActions.add(new CloseAction(executor, descriptor, project)); psiFile.putCopyableUserData(DESCRIPTOR_KEY, new WeakReference(descriptor)); ExecutionManager.getInstance(project).getContentManager().showRunContent(executor, descriptor); return descriptor; diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java index 21b3a5decb4d..e1dc6ccc8c2f 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java @@ -52,9 +52,11 @@ public abstract class FileTemplateManager{ public static final String PROJECT_NAME_VARIABLE = "PROJECT_NAME"; public static FileTemplateManager getInstance(@NotNull Project project){ - return ServiceManager.getService(project, FileTemplateManager.class); + return ServiceManager.getService(project, FileTemplateManager.class).checkInitialized(); } + protected FileTemplateManager checkInitialized() { return this; } + /** Use {@link #getInstance(Project)} instead */ @Deprecated public static FileTemplateManager getInstance(){ diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java index fe126a1eb7a6..ba20119f945a 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java @@ -65,9 +65,11 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers private final FileTypeManagerEx myTypeManager; private final Project myProject; + /** Null for default project. */ @Nullable private final FileTemplatesScheme myProjectScheme; private FileTemplatesScheme myScheme = FileTemplatesScheme.DEFAULT; + private boolean myInitialized; private final FTManager myInternalTemplatesManager; private final FTManager myDefaultTemplatesManager; @@ -130,19 +132,27 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers @Override public void setCurrentScheme(@NotNull FileTemplatesScheme scheme) { - setScheme(scheme, true); + for (FTManager child : myAllManagers) { + child.saveTemplates(); + } + setScheme(scheme); } - private void setScheme(@NotNull FileTemplatesScheme scheme, boolean saveBefore) { - if (saveBefore) { - for (FTManager child : myAllManagers) { - child.saveTemplates(); - } - } + private void setScheme(@NotNull FileTemplatesScheme scheme) { myScheme = scheme; for (FTManager manager : myAllManagers) { manager.setScheme(scheme); } + myInitialized = true; + } + + @Override + protected FileTemplateManager checkInitialized() { + if (!myInitialized) { + // loadState() not called; init default scheme + setScheme(myScheme); + } + return this; } @Nullable @@ -436,7 +446,8 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers @Override public void loadState(State state) { XmlSerializerUtil.copyBean(state, myState); - setScheme(myProjectScheme != null && myProjectScheme.getName().equals(state.SCHEME) ? myProjectScheme : FileTemplatesScheme.DEFAULT, false); + FileTemplatesScheme scheme = myProjectScheme != null && myProjectScheme.getName().equals(state.SCHEME) ? myProjectScheme : FileTemplatesScheme.DEFAULT; + setScheme(scheme); } public static class State { diff --git a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java index 13586f8bc1bd..98ac3829ccec 100644 --- a/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/scratch/ScratchFileServiceImpl.java @@ -107,9 +107,9 @@ public class ScratchFileServiceImpl extends ScratchFileService implements Persis @Nullable @Override public RootType getRootType(@NotNull VirtualFile file) { - if (!(file instanceof VirtualFileWithId)) return null; - if (!file.isValid()) return null; - RootType result = myIndex.getInfoForFile(file); + VirtualFile parent = file.getParent(); + if (!(parent instanceof VirtualFileWithId)) return null; + RootType result = myIndex.getInfoForFile(parent); return result == NULL_TYPE ? null : result; } diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java index 31800af92667..c386caf55115 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkAsOriginalTypeAction.java @@ -20,6 +20,7 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.file.exclude.EnforcedPlainTextFileTypeManager; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; +import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; @@ -29,7 +30,7 @@ import java.util.Collection; /** * @author Rustam Vishnyakov */ -public class MarkAsOriginalTypeAction extends AnAction { +public class MarkAsOriginalTypeAction extends DumbAwareAction { @Override public void actionPerformed(AnActionEvent e) { DataContext dataContext = e.getDataContext(); diff --git a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkFileGroup.java b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkFileGroup.java index 5199c072d98f..cc8f234df7d6 100644 --- a/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkFileGroup.java +++ b/platform/lang-impl/src/com/intellij/openapi/file/exclude/ui/MarkFileGroup.java @@ -19,11 +19,12 @@ import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.file.exclude.EnforcedPlainTextFileTypeManager; +import com.intellij.openapi.project.DumbAware; /** * @author Rustam Vishnyakov */ -public class MarkFileGroup extends DefaultActionGroup { +public class MarkFileGroup extends DefaultActionGroup implements DumbAware { @Override public void update(AnActionEvent e) { final Presentation presentation = e.getPresentation(); diff --git a/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java b/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java index fcd65d6f3e17..f7e413fe010e 100644 --- a/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java +++ b/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -80,6 +80,7 @@ public class DefaultLanguageColorsPage implements ColorSettingsPage, DisplayPrio TAG_HIGHLIGHTING_MAP.put("interface", DefaultLanguageHighlighterColors.INTERFACE_NAME); TAG_HIGHLIGHTING_MAP.put("doc_markup", DefaultLanguageHighlighterColors.DOC_COMMENT_MARKUP); TAG_HIGHLIGHTING_MAP.put("doc_tag", DefaultLanguageHighlighterColors.DOC_COMMENT_TAG); + TAG_HIGHLIGHTING_MAP.put("doc_tag_value", DefaultLanguageHighlighterColors.DOC_COMMENT_TAG_VALUE); TAG_HIGHLIGHTING_MAP.put("valid_esc_seq", DefaultLanguageHighlighterColors.VALID_STRING_ESCAPE); TAG_HIGHLIGHTING_MAP.put("invalid_esc_seq", DefaultLanguageHighlighterColors.INVALID_STRING_ESCAPE); TAG_HIGHLIGHTING_MAP.put("predefined", DefaultLanguageHighlighterColors.PREDEFINED_SYMBOL); @@ -128,6 +129,8 @@ public class DefaultLanguageColorsPage implements ColorSettingsPage, DisplayPrio OptionsBundle.message("options.language.defaults.doc.markup"), DefaultLanguageHighlighterColors.DOC_COMMENT_MARKUP), new AttributesDescriptor( OptionsBundle.message("options.language.defaults.doc.tag"), DefaultLanguageHighlighterColors.DOC_COMMENT_TAG), + new AttributesDescriptor( + OptionsBundle.message("options.language.defaults.doc.tag.value"), DefaultLanguageHighlighterColors.DOC_COMMENT_TAG_VALUE), new AttributesDescriptor( OptionsBundle.message("options.language.defaults.label"), DefaultLanguageHighlighterColors.LABEL), new AttributesDescriptor( @@ -203,6 +206,7 @@ public class DefaultLanguageColorsPage implements ColorSettingsPage, DisplayPrio "/** \n" + " * Doc comment\n" + " * @tag Markup\n" + + " * @param param_name documentation\n" + " */\n" + "\n" + "predefined_symbol()\n" + diff --git a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java index abd2c8fc6b52..0d2c973eb4a2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java @@ -17,7 +17,6 @@ package com.intellij.openapi.application.impl; import com.intellij.BundleBase; import com.intellij.CommonBundle; -import com.intellij.diagnostic.PerformanceWatcher; import com.intellij.diagnostic.ThreadDumper; import com.intellij.ide.*; import com.intellij.ide.plugins.IdeaPluginDescriptor; @@ -119,8 +118,6 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App private final Disposable myLastDisposable = Disposer.newDisposable(); // will be disposed last private final AtomicBoolean mySaveSettingsIsInProgress = new AtomicBoolean(false); - @SuppressWarnings({"UseOfArchaicSystemPropertyAccessors"}) - private static final int ourDumpThreadsOnLongWriteActionWaiting = Integer.getInteger("dump.threads.on.long.write.action.waiting", 0); private final ExecutorService ourThreadExecutorsService = PooledThreadExecutor.INSTANCE; private boolean myIsFiringLoadingEvent = false; @@ -1179,19 +1176,6 @@ public class ApplicationImpl extends PlatformComponentManagerImpl implements App } if (!myLock.writeLock().tryLock()) { final AtomicBoolean lockAcquired = new AtomicBoolean(false); - if (ourDumpThreadsOnLongWriteActionWaiting > 0) { - executeOnPooledThread(new Runnable() { - @Override - public void run() { - while (!lockAcquired.get()) { - TimeoutUtil.sleep(ourDumpThreadsOnLongWriteActionWaiting); - if (!lockAcquired.get()) { - PerformanceWatcher.getInstance().dumpThreads(true); - } - } - } - }); - } myLock.writeLock().lockInterruptibly(); lockAcquired.set(true); } diff --git a/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java index beb2a87ff11a..deab5db8adca 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/SchemesManagerImpl.java @@ -561,20 +561,19 @@ public class SchemesManagerImpl() { - @Override - public Object compute() throws IOException { - OutputStream out = finalFile.getOutputStream(this); - try { - byteOut.writeTo(out); - } - finally { - out.close(); - } - return null; + AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(DocumentRunnable.IgnoreDocumentRunnable.class); + try { + OutputStream out = file.getOutputStream(this); + try { + byteOut.writeTo(out); } - }); + finally { + out.close(); + } + } + finally { + token.finish(); + } } else if (renamed) { myFilesToDelete.add(currentFileNameWithoutExtension); diff --git a/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java b/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java index eeeb90dc7ae7..5567e5a60be0 100644 --- a/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java +++ b/platform/platform-impl/src/com/intellij/ui/TableSpeedSearch.java @@ -70,12 +70,18 @@ public class TableSpeedSearch extends SpeedSearchBase { @Override protected void selectElement(Object element, String selectedText) { - final int index = ((Integer)element).intValue(); - final int row = index / myComponent.getColumnCount(); - final int col = index % myComponent.getColumnCount(); - myComponent.getSelectionModel().setSelectionInterval(row, row); - myComponent.getColumnModel().getSelectionModel().setSelectionInterval(col, col); - TableUtil.scrollSelectionToVisible(myComponent); + if (element instanceof Integer) { + final int index = ((Integer)element).intValue(); + final int row = index / myComponent.getColumnCount(); + final int col = index % myComponent.getColumnCount(); + myComponent.getSelectionModel().setSelectionInterval(row, row); + myComponent.getColumnModel().getSelectionModel().setSelectionInterval(col, col); + TableUtil.scrollSelectionToVisible(myComponent); + } + else { + myComponent.getSelectionModel().clearSelection(); + myComponent.getColumnModel().getSelectionModel().clearSelection(); + } } @Override diff --git a/platform/platform-resources-en/src/messages/OptionsBundle.properties b/platform/platform-resources-en/src/messages/OptionsBundle.properties index f637c72abe84..53085b78104e 100644 --- a/platform/platform-resources-en/src/messages/OptionsBundle.properties +++ b/platform/platform-resources-en/src/messages/OptionsBundle.properties @@ -170,6 +170,7 @@ options.language.defaults.block.comment=Block comment options.language.defaults.doc.comment=Doc comment options.language.defaults.doc.markup=Doc comment markup options.language.defaults.doc.tag=Doc comment tag +options.language.defaults.doc.tag.value=Doc comment tag value options.language.defaults.label=Label options.language.defaults.constant=Constant options.language.defaults.local.variable=Local variable diff --git a/platform/platform-resources/src/DefaultColorSchemesManager.xml b/platform/platform-resources/src/DefaultColorSchemesManager.xml index 80871558f276..c5b5d117dea0 100644 --- a/platform/platform-resources/src/DefaultColorSchemesManager.xml +++ b/platform/platform-resources/src/DefaultColorSchemesManager.xml @@ -1667,6 +1667,11 @@ +