From 8e77ba037585e316d24b11d18bf19c67d668141f Mon Sep 17 00:00:00 2001 From: Dani Megert Date: Tue, 17 Mar 2015 11:57:52 +0100 Subject: Fixed bug 448863: [Search] Refresh on Access ignored during text search --- .../search/internal/core/text/TextSearchVisitor.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchVisitor.java b/org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchVisitor.java index aa9f5f59a17..ba75bfd67cc 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchVisitor.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchVisitor.java @@ -36,6 +36,8 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.JobGroup; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResourceStatus; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.filebuffers.FileBuffers; import org.eclipse.core.filebuffers.ITextFileBuffer; @@ -199,11 +201,15 @@ public class TextSearchVisitor { private final MultiStatus fStatus; + private boolean fIsLightweightAutoRefresh; + public TextSearchVisitor(TextSearchRequestor collector, Pattern searchPattern) { fCollector= collector; fStatus= new MultiStatus(NewSearchUI.PLUGIN_ID, IStatus.OK, SearchMessages.TextSearchEngine_statusMessage, null); fSearchPattern= searchPattern; + + fIsLightweightAutoRefresh= Platform.getPreferencesService().getBoolean(ResourcesPlugin.PI_RESOURCES, ResourcesPlugin.PREF_LIGHTWEIGHT_AUTO_REFRESH, false, null); } public IStatus search(IFile[] files, IProgressMonitor monitor) { @@ -401,9 +407,11 @@ public class TextSearchVisitor { String message= Messages.format(SearchMessages.TextSearchVisitor_error, args); return new Status(IStatus.ERROR, NewSearchUI.PLUGIN_ID, IStatus.ERROR, message, e); } catch (CoreException e) { - String[] args= { getExceptionMessage(e), file.getFullPath().makeRelative().toString()}; - String message= Messages.format(SearchMessages.TextSearchVisitor_error, args); - return new Status(IStatus.ERROR, NewSearchUI.PLUGIN_ID, IStatus.ERROR, message, e); + if (!fIsLightweightAutoRefresh || IResourceStatus.FAILED_READ_LOCAL != e.getStatus().getCode()) { + String[] args= { getExceptionMessage(e), file.getFullPath().makeRelative().toString() }; + String message= Messages.format(SearchMessages.TextSearchVisitor_error, args); + return new Status(IStatus.ERROR, NewSearchUI.PLUGIN_ID, IStatus.ERROR, message, e); + } } catch (StackOverflowError e) { // Trigger cancellation of remaining jobs in the group. // An alternative is to move this method into TextSearchJob and call getJobGroup().cancel() directly. -- cgit v1.2.3