No explicit runReadAction needed

This commit is contained in:
Valentin Kipyatkov
2015-04-07 22:59:57 +03:00
parent 2440371cd9
commit 00660bc59e
@@ -20,7 +20,6 @@ import com.intellij.codeInsight.AutoPopupController
import com.intellij.codeInsight.completion.InsertionContext import com.intellij.codeInsight.completion.InsertionContext
import com.intellij.codeInsight.lookup.Lookup import com.intellij.codeInsight.lookup.Lookup
import com.intellij.codeInsight.lookup.LookupElement import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.editor.Document import com.intellij.openapi.editor.Document
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.idea.core.formatter.JetCodeStyleSettings
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.idea.util.ImportInsertHelper import org.jetbrains.kotlin.idea.util.ImportInsertHelper
import org.jetbrains.kotlin.idea.util.ShortenReferences import org.jetbrains.kotlin.idea.util.ShortenReferences
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
@@ -51,26 +51,24 @@ public abstract class KotlinCallableInsertHandler : BaseDeclarationInsertHandler
private fun addImport(context : InsertionContext, item : LookupElement) { private fun addImport(context : InsertionContext, item : LookupElement) {
PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments() PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments()
ApplicationManager.getApplication()?.runReadAction { val startOffset = context.getStartOffset()
val startOffset = context.getStartOffset() val element = context.getFile().findElementAt(startOffset)
val element = context.getFile().findElementAt(startOffset)
if (element == null) return@runReadAction if (element == null) return
val file = context.getFile() val file = context.getFile()
val o = item.getObject() val o = item.getObject()
if (file is JetFile && o is DeclarationDescriptorLookupObject) { if (file is JetFile && o is DeclarationDescriptorLookupObject) {
val descriptor = o.descriptor as? CallableDescriptor val descriptor = o.descriptor as? CallableDescriptor
if (descriptor != null) { if (descriptor != null) {
// for completion after dot, import insertion may be required only for extensions // for completion after dot, import insertion may be required only for extensions
if (context.isAfterDot() && descriptor.getExtensionReceiverParameter() == null) { if (context.isAfterDot() && descriptor.getExtensionReceiverParameter() == null) {
return@runReadAction return
} }
if (DescriptorUtils.isTopLevelDeclaration(descriptor)) { if (DescriptorUtils.isTopLevelDeclaration(descriptor)) {
ApplicationManager.getApplication()?.runWriteAction { runWriteAction {
ImportInsertHelper.getInstance(context.getProject()).importDescriptor(file, descriptor) ImportInsertHelper.getInstance(context.getProject()).importDescriptor(file, descriptor)
}
} }
} }
} }