diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index 9b354805211b..f5c06224f8c7 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -1192,6 +1192,10 @@ public abstract class ChooseByNameBase { myPostponedOkAction = null; } + public boolean hasPostponedAction() { + return myPostponedOkAction != null; + } + protected abstract void showList(); protected abstract void hideList(); diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java index 6174054be32f..40a9cf04afbc 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/GotoTaskAction.java @@ -54,7 +54,6 @@ public class GotoTaskAction extends GotoActionBase implements DumbAware { popup.setShowListForEmptyPattern(true); popup.setSearchInAnyPlace(true); - popup.setFixLostTyping(false); popup.setAlwaysHasMore(true); popup.setAdText("Press SHIFT to merge with current context
" + "Pressing " + diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/TaskItemProvider.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/TaskItemProvider.java index 0e39cbb93a8f..0bd5835cd1a6 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/TaskItemProvider.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/actions/TaskItemProvider.java @@ -26,7 +26,7 @@ import java.util.concurrent.atomic.AtomicReference; class TaskItemProvider implements ChooseByNameItemProvider, Disposable { private static final Logger LOG = Logger.getInstance(TaskItemProvider.class); - private static final int DELAY_PERIOD = 1000; // ms + private static final int DELAY_PERIOD = 200; // ms private final Project myProject; @@ -85,10 +85,22 @@ class TaskItemProvider implements ChooseByNameItemProvider, Disposable { if (myAlarm.isDisposed()) { return false; } - myAlarm.addRequest(future, DELAY_PERIOD); + myAlarm.addRequest(future, oldFuture == null && pattern.length() > 5 ? 0 : DELAY_PERIOD); try { - List tasks = future.get(); + List tasks; + while (true) { + try { + tasks = future.get(10, TimeUnit.MILLISECONDS); + break; + } + catch (TimeoutException ignore) { + } + if (base.hasPostponedAction()) { + future.cancel(true); + return true; + } + } myFutureReference.compareAndSet(future, null); // Exclude *all* cached and local issues, not only those returned by TaskSearchSupport.getLocalAndCachedTasks().