diff --git a/platform/lang-impl/src/com/intellij/util/CompletionContributorForTextField.java b/platform/lang-impl/src/com/intellij/util/CompletionContributorForTextField.java index b7f2eb6a8163..9281cccf439e 100644 --- a/platform/lang-impl/src/com/intellij/util/CompletionContributorForTextField.java +++ b/platform/lang-impl/src/com/intellij/util/CompletionContributorForTextField.java @@ -3,25 +3,26 @@ package com.intellij.util; import com.intellij.codeInsight.completion.CompletionContributor; import com.intellij.codeInsight.completion.CompletionParameters; import com.intellij.codeInsight.completion.CompletionResultSet; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.project.DumbService; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiPlainTextFile; /** * @author sergey.evdokimov */ -public class CompletionContributorForTextField extends CompletionContributor { +public class CompletionContributorForTextField extends CompletionContributor implements DumbAware { @Override public void fillCompletionVariants(CompletionParameters parameters, CompletionResultSet result) { PsiFile file = parameters.getOriginalFile(); if (!(file instanceof PsiPlainTextFile)) return; - ApplicationManager.getApplication().assertReadAccessAllowed(); - TextFieldCompletionProvider field = file.getUserData(TextFieldCompletionProvider.COMPLETING_TEXT_FIELD_KEY); if (field == null) return; + if (!(field instanceof DumbAware) && DumbService.isDumb(file.getProject())) return; + String text = file.getText(); int offset = Math.min(text.length(), parameters.getOffset()); diff --git a/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProviderDumbAware.java b/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProviderDumbAware.java new file mode 100644 index 000000000000..e118f7fcea43 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/util/TextFieldCompletionProviderDumbAware.java @@ -0,0 +1,10 @@ +package com.intellij.util; + +import com.intellij.openapi.project.DumbAware; + +/** + * @author sergey.evdokimov + */ +public abstract class TextFieldCompletionProviderDumbAware extends TextFieldCompletionProvider implements DumbAware { + +} diff --git a/plugins/git4idea/src/git4idea/history/wholeTree/UsersFilterAction.java b/plugins/git4idea/src/git4idea/history/wholeTree/UsersFilterAction.java index fbc090195865..22066bec2fef 100644 --- a/plugins/git4idea/src/git4idea/history/wholeTree/UsersFilterAction.java +++ b/plugins/git4idea/src/git4idea/history/wholeTree/UsersFilterAction.java @@ -35,6 +35,7 @@ import com.intellij.ui.EditorTextField; import com.intellij.ui.EditorTextFieldProvider; import com.intellij.util.Consumer; import com.intellij.util.TextFieldCompletionProvider; +import com.intellij.util.TextFieldCompletionProviderDumbAware; import git4idea.history.NewGitUsersComponent; import org.jetbrains.annotations.NotNull; @@ -151,7 +152,7 @@ public class UsersFilterAction extends BasePopupAction { myEditorField.setOneLineMode(false); panel.add(myEditorField, BorderLayout.CENTER); - myTextFieldCompletionProvider = new TextFieldCompletionProvider() { + myTextFieldCompletionProvider = new TextFieldCompletionProviderDumbAware() { @NotNull @Override protected String getPrefix(@NotNull String currentTextPrefix) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java index 2227fdf71f3b..f9c4ff502463 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java @@ -28,6 +28,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.*; import com.intellij.util.ArrayUtil; import com.intellij.util.TextFieldCompletionProvider; +import com.intellij.util.TextFieldCompletionProviderDumbAware; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.mvc.util.ModuleCellRenderer; import org.jetbrains.plugins.groovy.mvc.util.MvcTargetDialogCompletionUtils; @@ -148,7 +149,7 @@ public class MvcRunTargetDialog extends DialogWrapper { myFakePanel = new JPanel(new BorderLayout()); myFakePanel.add(myTargetField, BorderLayout.CENTER); - TextFieldCompletionProvider vmOptionCompletionProvider = new TextFieldCompletionProvider() { + TextFieldCompletionProvider vmOptionCompletionProvider = new TextFieldCompletionProviderDumbAware() { @NotNull @Override protected String getPrefix(@NotNull String currentTextPrefix) { @@ -164,7 +165,7 @@ public class MvcRunTargetDialog extends DialogWrapper { }; myVmOptionsField = vmOptionCompletionProvider.createEditor(myModule.getProject()); - new TextFieldCompletionProvider() { + new TextFieldCompletionProviderDumbAware() { @NotNull @Override