KT-19278 Optimize imports on the fly should not remove incomplete import while it's being typed
#KT-19278 Fixed
This commit is contained in:
@@ -37,11 +37,14 @@ import com.intellij.openapi.progress.ProgressManager
|
||||
import com.intellij.openapi.progress.util.ProgressWrapper
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.util.PsiUtilBase
|
||||
import com.intellij.util.DocumentUtil
|
||||
import org.jetbrains.kotlin.idea.core.targetDescriptors
|
||||
import org.jetbrains.kotlin.idea.editor.fixers.end
|
||||
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
||||
import org.jetbrains.kotlin.idea.imports.OptimizedImportsBuilder
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
@@ -50,6 +53,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtCodeFragment
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||
import org.jetbrains.kotlin.resolve.ImportPath
|
||||
import java.util.*
|
||||
|
||||
@@ -180,8 +184,11 @@ class KotlinUnusedImportInspection : AbstractKotlinInspection() {
|
||||
|
||||
// if we stand inside import statements, do not optimize
|
||||
val importList = file.importList ?: return false
|
||||
if (importList)
|
||||
val importsRange = importList?.textRange ?: return false
|
||||
val leftSpace = importList.siblings(forward = false, withItself = false).firstOrNull() as? PsiWhiteSpace
|
||||
val rightSpace = importList.siblings(forward = true, withItself = false).firstOrNull() as? PsiWhiteSpace
|
||||
val left = leftSpace ?: importList
|
||||
val right = rightSpace ?: importList
|
||||
val importsRange = TextRange(left.textRange.startOffset, right.textRange.endOffset)
|
||||
if (importsRange.containsOffset(editor.caretModel.offset)) return false
|
||||
|
||||
val codeAnalyzer = DaemonCodeAnalyzerEx.getInstanceEx(project)
|
||||
|
||||
Reference in New Issue
Block a user