diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/find')
8 files changed, 55 insertions, 37 deletions
diff --git a/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java b/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java index 9613ac0dd33f..4d7eee35a462 100644 --- a/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java +++ b/platform/lang-impl/src/com/intellij/find/EditorSearchComponent.java @@ -425,6 +425,10 @@ public class EditorSearchComponent extends EditorHeaderComponent implements Data myToolbarComponent.setOpaque(false); } + public void selectAllText() { + mySearchField.selectAll(); + } + private boolean secondaryActionsAvailable() { return FindManagerImpl.ourHasSearchInCommentsAndLiterals; } @@ -483,10 +487,11 @@ public class EditorSearchComponent extends EditorHeaderComponent implements Data } private void updateUIWithFindModel() { - + boolean needToResetFocus = false; myActionsToolbar.updateActionsImmediately(); if ((myFindModel.isMultiline() && mySearchField instanceof JTextField) || (!myFindModel.isMultiline() && mySearchField instanceof JTextArea)) { + needToResetFocus = mySearchField.hasFocus(); myLeftComponent.removeAll(); myRightComponent.removeAll(); myReplaceRootComponent = null; @@ -529,6 +534,7 @@ public class EditorSearchComponent extends EditorHeaderComponent implements Data updateReplaceButton(); Utils.setSmallerFontForChildren(myToolbarComponent); revalidate(); + if (needToResetFocus) mySearchField.requestFocusInWindow(); } private static boolean wholeWordsApplicable(String stringToFind) { diff --git a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToFind.java b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToFind.java index 440a76c87608..7e4b555d264c 100644 --- a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToFind.java +++ b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToFind.java @@ -36,8 +36,10 @@ public class SwitchToFind extends EditorHeaderAction implements DumbAware { action.actionPerformed(e); return; } - - final FindModel findModel = getEditorSearchComponent().getFindModel(); + + EditorSearchComponent component = getEditorSearchComponent(); + final FindModel findModel = component.getFindModel(); FindUtil.configureFindModel(false, null, findModel, false); + component.selectAllText(); } } diff --git a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToReplace.java b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToReplace.java index f667f019db17..2d8b48aad855 100644 --- a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToReplace.java +++ b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/SwitchToReplace.java @@ -33,7 +33,9 @@ public class SwitchToReplace extends EditorHeaderAction { @Override public void actionPerformed(AnActionEvent e) { - final FindModel findModel = getEditorSearchComponent().getFindModel(); + EditorSearchComponent component = getEditorSearchComponent(); + final FindModel findModel = component.getFindModel(); FindUtil.configureFindModel(true, null, findModel, false); + component.selectAllText(); } } diff --git a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/ToggleRegex.java b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/ToggleRegex.java index 1a4ea149df7d..472517ab336d 100644 --- a/platform/lang-impl/src/com/intellij/find/editorHeaderActions/ToggleRegex.java +++ b/platform/lang-impl/src/com/intellij/find/editorHeaderActions/ToggleRegex.java @@ -30,12 +30,6 @@ public class ToggleRegex extends EditorHeaderToggleAction { } @Override - public void update(AnActionEvent e) { - super.update(e); - e.getPresentation().setVisible(!getEditorSearchComponent().getFindModel().isMultiline()); - } - - @Override public void setSelected(AnActionEvent e, boolean state) { final FindModel findModel = getEditorSearchComponent().getFindModel(); findModel.setRegularExpressions(state); diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectTask.java b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectTask.java index 7dfdbbce16d7..822ffbb64037 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindInProjectTask.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindInProjectTask.java @@ -38,6 +38,7 @@ import com.intellij.openapi.project.ProjectCoreUtil; import com.intellij.openapi.roots.*; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.Conditions; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.TrigramBuilder; @@ -105,7 +106,7 @@ class FindInProjectTask { final Pattern pattern = FindInProjectUtil.createFileMaskRegExp(filter); //noinspection unchecked - myFileMask = pattern == null ? Condition.TRUE : new Condition<VirtualFile>() { + myFileMask = pattern == null ? Conditions.<VirtualFile>alwaysTrue() : new Condition<VirtualFile>() { @Override public boolean value(VirtualFile file) { return file != null && pattern.matcher(file.getName()).matches(); @@ -127,6 +128,9 @@ class FindInProjectTask { } }); myProgress.setIndeterminate(false); + if (LOG.isDebugEnabled()) { + LOG.debug("Searching for " + myFindModel.getStringToFind() + " in " + filesForFastWordSearch.size() + " indexed files"); + } searchInFiles(filesForFastWordSearch, processPresentation, consumer); @@ -136,6 +140,10 @@ class FindInProjectTask { final Collection<PsiFile> otherFiles = collectFilesInScope(filesForFastWordSearch, skipIndexed); myProgress.setIndeterminate(false); + if (LOG.isDebugEnabled()) { + LOG.debug("Searching for " + myFindModel.getStringToFind() + " in " + otherFiles.size() + " non-indexed files"); + } + long start = System.currentTimeMillis(); searchInFiles(otherFiles, processPresentation, consumer); if (skipIndexed && otherFiles.size() > 1000) { @@ -143,7 +151,10 @@ class FindInProjectTask { } } catch (ProcessCanceledException e) { - // fine + processPresentation.setCanceled(true); + if (LOG.isDebugEnabled()) { + LOG.debug("Usage search canceled", e); + } } if (!myLargeFiles.isEmpty()) { diff --git a/platform/lang-impl/src/com/intellij/find/impl/FindManagerImpl.java b/platform/lang-impl/src/com/intellij/find/impl/FindManagerImpl.java index b7d58e926e30..f077008068ad 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/FindManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/find/impl/FindManagerImpl.java @@ -446,8 +446,16 @@ public class FindManagerImpl extends FindManager implements PersistentStateCompo final FindModel model = new FindModel(); model.copyFrom(findmodel); final String s = model.getStringToFind(); - model.setStringToFind(StringUtil.escapeToRegexp(s)); - model.setRegularExpressions(true); + String newStringToFind; + + if (findmodel.isRegularExpressions()) { + newStringToFind = StringUtil.replace(s, "\n", "\\n\\s*"); // add \\s* for convenience + } else { + newStringToFind = StringUtil.escapeToRegexp(s); + model.setRegularExpressions(true); + } + model.setStringToFind(newStringToFind); + return model; } return findmodel; diff --git a/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreview.java b/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreview.java index 995a67ecafa1..e104c1664857 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreview.java +++ b/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreview.java @@ -24,7 +24,6 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.SelectionModel; -import com.intellij.openapi.editor.colors.CodeInsightColors; import com.intellij.openapi.editor.colors.EditorColors; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.event.*; @@ -53,9 +52,7 @@ import java.io.PrintStream; import java.util.*; import java.util.List; -public class LivePreview extends DocumentAdapter implements SearchResults.SearchResultsListener, - SelectionListener { - +public class LivePreview extends DocumentAdapter implements SearchResults.SearchResultsListener, SelectionListener { private static final Key<Object> IN_SELECTION_KEY = Key.create("LivePreview.IN_SELECTION_KEY"); private static final Object IN_SELECTION1 = new Object(); private static final Object IN_SELECTION2 = new Object(); @@ -73,6 +70,13 @@ public class LivePreview extends DocumentAdapter implements SearchResults.Search private String myReplacementPreviewText; private static boolean NotFound; + private final Set<RangeHighlighter> myHighlighters = new HashSet<RangeHighlighter>(); + private RangeHighlighter myCursorHighlighter; + private final List<VisibleAreaListener> myVisibleAreaListenersToRemove = new ArrayList<VisibleAreaListener>(); + private Delegate myDelegate; + private final SearchResults mySearchResults; + private Balloon myReplacementBalloon; + @Override public void selectionChanged(SelectionEvent e) { updateInSelectionHighlighters(); @@ -87,27 +91,15 @@ public class LivePreview extends DocumentAdapter implements SearchResults.Search } public interface Delegate { - @Nullable - String getStringToReplace(Editor editor, FindResult findResult); - + String getStringToReplace(@NotNull Editor editor, @Nullable FindResult findResult); } - private final Set<RangeHighlighter> myHighlighters = new HashSet<RangeHighlighter>(); - - private RangeHighlighter myCursorHighlighter; - private final List<VisibleAreaListener> myVisibleAreaListenersToRemove = new ArrayList<VisibleAreaListener>(); - - private static TextAttributes strikout() { - return EditorColorsManager.getInstance().getGlobalScheme().getAttributes(CodeInsightColors.DEPRECATED_ATTRIBUTES).clone(); + private static TextAttributes strikeout() { + Color color = EditorColorsManager.getInstance().getGlobalScheme().getDefaultForeground(); + return new TextAttributes(null, null, color, EffectType.STRIKEOUT, 0); } - private Delegate myDelegate; - - private final SearchResults mySearchResults; - - private Balloon myReplacementBalloon; - @Override public void searchResultsUpdated(SearchResults sr) { final Project project = mySearchResults.getProject(); @@ -323,7 +315,7 @@ public class LivePreview extends DocumentAdapter implements SearchResults.Search attributes.setEffectColor(attributes.getBackgroundColor()); } if (mySearchResults.isExcluded(range)) { - highlightRange(range, strikout(), myHighlighters); + highlightRange(range, strikeout(), myHighlighters); } else { highlightRange(range, attributes, myHighlighters); } diff --git a/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewController.java b/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewController.java index 94a6c3f9c1bc..a894781d5cb1 100644 --- a/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewController.java +++ b/platform/lang-impl/src/com/intellij/find/impl/livePreview/LivePreviewController.java @@ -19,7 +19,9 @@ import com.intellij.find.*; import com.intellij.find.impl.FindResultImpl; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.editor.*; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.RangeMarker; +import com.intellij.openapi.editor.SelectionModel; import com.intellij.openapi.editor.event.DocumentAdapter; import com.intellij.openapi.editor.event.DocumentEvent; import com.intellij.openapi.editor.event.SelectionEvent; @@ -29,6 +31,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.ReadonlyStatusHandler; import com.intellij.util.Alarm; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -147,7 +150,7 @@ public class LivePreviewController implements LivePreview.Delegate, FindUtil.Rep } @Override - public String getStringToReplace(Editor editor, FindResult findResult) { + public String getStringToReplace(@NotNull Editor editor, @Nullable FindResult findResult) { if (findResult == null) { return null; } |