From e13715ab0e2760930cbf88ce4fbef7d298deb1de Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 10 Jul 2014 11:36:34 +0200 Subject: [PATCH 1/7] fix NPE --- .../debugger-ui/src/org/jetbrains/debugger/VariableView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java index 352b67351f63..ada850da074b 100644 --- a/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java +++ b/platform/script-debugger/debugger-ui/src/org/jetbrains/debugger/VariableView.java @@ -164,7 +164,7 @@ public final class VariableView extends XNamedValue implements VariableContext { if (!node.isObsolete()) { value = getViewSupport().transformErrorOnGetUsedReferenceValue(value, error); if (value == null) { - node.setPresentation(getIcon(), null, error, false); + node.setPresentation(AllIcons.Debugger.Db_primitive, null, error, false); } else { VariableView.this.value = value; From 560fb1c6748ac1935dfc820ce1a5bb7035886a24 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Thu, 10 Jul 2014 11:50:17 +0200 Subject: [PATCH 2/7] fix not-null assertion --- .../src/com/intellij/openapi/util/AsyncValueLoader.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/core-api/src/com/intellij/openapi/util/AsyncValueLoader.java b/platform/core-api/src/com/intellij/openapi/util/AsyncValueLoader.java index f3b13dc6963c..e5b230788424 100644 --- a/platform/core-api/src/com/intellij/openapi/util/AsyncValueLoader.java +++ b/platform/core-api/src/com/intellij/openapi/util/AsyncValueLoader.java @@ -2,6 +2,7 @@ package com.intellij.openapi.util; import com.intellij.openapi.Disposable; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.util.concurrent.atomic.AtomicReference; @@ -125,7 +126,7 @@ public abstract class AsyncValueLoader { protected abstract void load(@NotNull AsyncResult result) throws IOException; - protected boolean isUpToDate(@NotNull T result) { + protected boolean isUpToDate(@Nullable T result) { return loadedModificationCount == modificationCount; } From fca4af37d6d41e90573d6712339d6dcc657e9195 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 10 Jul 2014 11:45:58 +0200 Subject: [PATCH 3/7] more efficient shortening of class references in SSR --- .../StructuralReplaceHandler.java | 7 ++++--- .../plugin/replace/impl/Replacer.java | 18 ++++++++++-------- .../structuralsearch/JavaReplaceHandler.java | 10 +++++++--- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/StructuralReplaceHandler.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/StructuralReplaceHandler.java index 063f272cf4c4..68c6c522239e 100644 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/StructuralReplaceHandler.java +++ b/plugins/structuralsearch/source/com/intellij/structuralsearch/StructuralReplaceHandler.java @@ -1,5 +1,6 @@ package com.intellij.structuralsearch; +import com.intellij.psi.PsiElement; import com.intellij.structuralsearch.plugin.replace.ReplaceOptions; import com.intellij.structuralsearch.plugin.replace.ReplacementInfo; @@ -9,7 +10,7 @@ import com.intellij.structuralsearch.plugin.replace.ReplacementInfo; public abstract class StructuralReplaceHandler { public abstract void replace(final ReplacementInfo info, ReplaceOptions options); - public void prepare - (ReplacementInfo info) { - } + public void prepare(ReplacementInfo info) {} + + public void postprocess(PsiElement affectedElement, ReplaceOptions options) {} } diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/Replacer.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/Replacer.java index 9980e95c77d7..b409cfd0beb7 100644 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/Replacer.java +++ b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/Replacer.java @@ -158,12 +158,12 @@ public class Replacer { currentAffectedElement = doReplace(aResultPtrList); if (currentAffectedElement != lastAffectedElement) { - if (lastAffectedElement != null) reformatAndShortenRefs(lastAffectedElement); + if (lastAffectedElement != null) reformatAndPostProcess(lastAffectedElement); lastAffectedElement = currentAffectedElement; } } - reformatAndShortenRefs(lastAffectedElement); + reformatAndPostProcess(lastAffectedElement); } public void replace(ReplacementInfo info) { @@ -173,7 +173,7 @@ public class Replacer { if (replaceHandler != null) { replaceHandler.prepare(info); } - reformatAndShortenRefs(doReplace(info)); + reformatAndPostProcess(doReplace(info)); } @Nullable @@ -211,11 +211,10 @@ public class Replacer { return elementParent; } - private void reformatAndShortenRefs(final PsiElement elementParent) { + private void reformatAndPostProcess(final PsiElement elementParent) { if (elementParent == null) return; final Runnable action = new Runnable() { public void run() { - CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(PsiManager.getInstance(project).getProject()); final PsiFile containingFile = elementParent.getContainingFile(); if (containingFile != null && options.isToReformatAccordingToStyle()) { @@ -224,9 +223,12 @@ public class Replacer { .commitDocument(FileDocumentManager.getInstance().getDocument(containingFile.getVirtualFile())); } - final int parentOffset = elementParent.getTextRange().getStartOffset(); - - codeStyleManager.reformatRange(containingFile, parentOffset, parentOffset + elementParent.getTextLength(), true); + final int parentOffset = elementParent.getTextOffset(); + CodeStyleManager.getInstance(project) + .reformatRange(containingFile, parentOffset, parentOffset + elementParent.getTextLength(), true); + } + if (replaceHandler != null) { + replaceHandler.postprocess(elementParent, options); } } }; diff --git a/plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java b/plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java index 36b8fff26afb..1993789b5b4d 100644 --- a/plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java +++ b/plugins/structuralsearch/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java @@ -449,9 +449,13 @@ public class JavaReplaceHandler extends StructuralReplaceHandler { element.getParent().deleteChildRange(firstToDelete, lastToDelete); } } - - if (options.isToShortenFQN() && elementParent.isValid()) { - JavaCodeStyleManager.getInstance(project).shortenClassReferences(elementParent, 0, elementParent.getTextLength()); + } + + @Override + public void postprocess(PsiElement affectedElement, ReplaceOptions options) { + if (options.isToShortenFQN() && affectedElement.isValid()) { + final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(affectedElement.getProject()); + codeStyleManager.shortenClassReferences(affectedElement, 0, affectedElement.getTextLength()); } } From 472994b5bbe2583e9d24ac0c25c49b7d55b61141 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 10 Jul 2014 11:46:36 +0200 Subject: [PATCH 4/7] remove some dead code from SSR search dialog --- .../plugin/replace/ui/ReplaceDialog.java | 17 ----------------- .../plugin/ui/SearchDialog.java | 5 ----- 2 files changed, 22 deletions(-) diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceDialog.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceDialog.java index 2ae0b18469fb..be353c35c5ca 100644 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceDialog.java +++ b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/ui/ReplaceDialog.java @@ -33,23 +33,6 @@ public class ReplaceDialog extends SearchDialog { return SSRBundle.message("structural.replace.title"); } - protected boolean isChanged(Configuration configuration) { - if (super.isChanged(configuration)) return true; - - String replacement; - - if (configuration instanceof ReplaceConfiguration) { - replacement = ((ReplaceConfiguration)configuration).getOptions().getReplacement(); - } - else { - replacement = configuration.getMatchOptions().getSearchPattern(); - } - - if (replacement == null) return false; - - return !replaceCriteriaEdit.getDocument().getText().equals(replacement); - } - protected JComponent createEditorContent() { JPanel result = new JPanel(new BorderLayout()); Splitter p; diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java index 5255472d4ce6..a3bee702563e 100644 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java +++ b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchDialog.java @@ -135,11 +135,6 @@ public class SearchDialog extends DialogWrapper implements ConfigurationCreator this.useLastConfiguration = useLastConfiguration; } - protected boolean isChanged(Configuration configuration) { - return configuration.getMatchOptions().getSearchPattern() != null && - !searchCriteriaEdit.getDocument().getText().equals(configuration.getMatchOptions().getSearchPattern()); - } - public void setSearchPattern(final Configuration config) { model.setShadowConfig(config); setValuesFromConfig(config); From 34dcb63e3c0055c93faba3e405a6ede2c8eade3f Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 10 Jul 2014 11:47:19 +0200 Subject: [PATCH 5/7] SSR: remove unnecessary class --- .../plugin/ui/SearchCommand.java | 133 +++++++++--------- .../plugin/ui/actions/DoSearchAction.java | 24 ---- 2 files changed, 65 insertions(+), 92 deletions(-) delete mode 100644 plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/actions/DoSearchAction.java diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java index 7c51fa85af3b..8cb7e55ea290 100644 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java +++ b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/SearchCommand.java @@ -14,7 +14,6 @@ import com.intellij.psi.PsiNameIdentifierOwner; import com.intellij.structuralsearch.*; import com.intellij.structuralsearch.impl.matcher.MatchResultImpl; import com.intellij.structuralsearch.plugin.StructuralSearchPlugin; -import com.intellij.structuralsearch.plugin.ui.actions.DoSearchAction; import com.intellij.usageView.UsageInfo; import com.intellij.usages.Usage; import com.intellij.usages.UsageInfo2UsageAdapter; @@ -42,74 +41,72 @@ public class SearchCommand { public void findUsages(final Processor processor) { final ProgressIndicator progress = ProgressManager.getInstance().getProgressIndicator(); + final MatchResultSink sink = new MatchResultSink() { + int count; + + public void setMatchingProcess(MatchingProcess _process) { + process = _process; + findStarted(); + } + + public void processFile(PsiFile element) { + final VirtualFile virtualFile = element.getVirtualFile(); + if (virtualFile != null) + progress.setText(SSRBundle.message("looking.in.progress.message", virtualFile.getPresentableName())); + } + + public void matchingFinished() { + findEnded(); + progress.setText(SSRBundle.message("found.progress.message", count)); + } + + public ProgressIndicator getProgressIndicator() { + return progress; + } + + public void newMatch(MatchResult result) { + UsageInfo info; + + if (MatchResult.MULTI_LINE_MATCH.equals(result.getName())) { + int start = -1; + int end = -1; + PsiElement parent = result.getMatchRef().getElement().getParent(); + + for (final MatchResult matchResult : ((MatchResultImpl)result).getMatches()) { + PsiElement el = matchResult.getMatchRef().getElement(); + final int elementStart = el.getTextRange().getStartOffset(); + + if (start == -1 || start > elementStart) { + start = elementStart; + } + final int newend = elementStart + el.getTextLength(); + + if (newend > end) { + end = newend; + } + } + + final int parentStart = parent.getTextRange().getStartOffset(); + int startOffset = start - parentStart; + info = new UsageInfo(parent, startOffset, end - parentStart); + } + else { + PsiElement element = result.getMatch(); + if (element instanceof PsiNameIdentifierOwner) { + element = ObjectUtils.notNull(((PsiNameIdentifierOwner)element).getNameIdentifier(), element); + } + info = new UsageInfo(element, result.getStart(), result.getEnd() == -1 ? element.getTextLength() : result.getEnd()); + } + + Usage usage = new UsageInfo2UsageAdapter(info); + processor.process(usage); + foundUsage(result, usage); + ++count; + } + }; + try { - DoSearchAction.execute( - project, - new MatchResultSink() { - int count; - - public void setMatchingProcess(MatchingProcess _process) { - process = _process; - findStarted(); - } - - public void processFile(PsiFile element) { - final VirtualFile virtualFile = element.getVirtualFile(); - if (virtualFile != null) - progress.setText(SSRBundle.message("looking.in.progress.message", virtualFile.getPresentableName())); - } - - public void matchingFinished() { - findEnded(); - progress.setText(SSRBundle.message("found.progress.message", count)); - } - - public ProgressIndicator getProgressIndicator() { - return progress; - } - - public void newMatch(MatchResult result) { - UsageInfo info; - - if (MatchResult.MULTI_LINE_MATCH.equals(result.getName())) { - int start = -1; - int end = -1; - PsiElement parent = result.getMatchRef().getElement().getParent(); - - for (final MatchResult matchResult : ((MatchResultImpl)result).getMatches()) { - PsiElement el = matchResult.getMatchRef().getElement(); - final int elementStart = el.getTextRange().getStartOffset(); - - if (start == -1 || start > elementStart) { - start = elementStart; - } - final int newend = elementStart + el.getTextLength(); - - if (newend > end) { - end = newend; - } - } - - final int parentStart = parent.getTextRange().getStartOffset(); - int startOffset = start - parentStart; - info = new UsageInfo(parent, startOffset, end - parentStart); - } - else { - PsiElement element = result.getMatch(); - if (element instanceof PsiNameIdentifierOwner) { - element = ObjectUtils.notNull(((PsiNameIdentifierOwner)element).getNameIdentifier(), element); - } - info = new UsageInfo(element, result.getStart(), result.getEnd() == -1 ? element.getTextLength() : result.getEnd()); - } - - Usage usage = new UsageInfo2UsageAdapter(info); - processor.process(usage); - foundUsage(result, usage); - ++count; - } - }, - context.getConfiguration() - ); + new Matcher(project).findMatches(sink, context.getConfiguration().getMatchOptions()); } catch (final StructuralSearchException e) { final Alarm alarm = new Alarm(); diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/actions/DoSearchAction.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/actions/DoSearchAction.java deleted file mode 100644 index ed0da3a3f391..000000000000 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/actions/DoSearchAction.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.intellij.structuralsearch.plugin.ui.actions; - -import com.intellij.structuralsearch.plugin.ui.Configuration; -import com.intellij.structuralsearch.*; -import com.intellij.openapi.project.Project; - -/** - * Does the search action - */ -public class DoSearchAction { - public static void execute(final Project project, MatchResultSink sink, - final Configuration configuration) { - final MatchOptions options = configuration.getMatchOptions(); - - final Matcher matcher = new Matcher(project); - try { - matcher.findMatches(sink, options); - } - finally { - sink.matchingFinished(); - } - } - -} From d08111d163c0492f4c49f058e3c0a09bd9a6af6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Thu, 10 Jul 2014 12:13:57 +0200 Subject: [PATCH 6/7] XML Colors settings: fix description text (missing line breaks) --- .../intellij/openapi/options/colors/pages/XMLColorsPage.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java b/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java index b774c8e9e82f..2fdc933ffc55 100644 --- a/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java +++ b/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java @@ -84,8 +84,9 @@ public class XMLColorsPage implements ColorSettingsPage { " \n" + " \n" + " \n" + - " \n& ·" + - " " + + " \n" + + " & ·\n" + + " \n" + " <pf:foo pf:bar=\"bar\"/>\n" + ""; } From c3c78c5bab7be1cc136aec7841c9d5c73527cdc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Thu, 10 Jul 2014 12:20:46 +0200 Subject: [PATCH 7/7] IDEA-93948 Code Style->XML->Other: no preview text for CDATA --- .../intellij/openapi/options/colors/pages/XMLColorsPage.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java b/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java index 2fdc933ffc55..d5a8f7fa77f4 100644 --- a/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java +++ b/xml/impl/src/com/intellij/openapi/options/colors/pages/XMLColorsPage.java @@ -86,6 +86,11 @@ public class XMLColorsPage implements ColorSettingsPage { " \n" + " \n" + " & ·\n" + + " \n" + + " \n" + + " ]]>\n" + + " \n" + " \n" + " <pf:foo pf:bar=\"bar\"/>\n" + "";