KotlinCopyPasteReferenceProcessor clean up
Relates to #KT-37971
This commit is contained in:
@@ -464,12 +464,9 @@ class KotlinCopyPasteReferenceProcessor : CopyPastePostProcessor<BasicKotlinRefe
|
||||
|
||||
// Step 2. Find references to restore in a target file
|
||||
return ProgressIndicatorUtils.awaitWithCheckCanceled(
|
||||
nonBlocking<List<ReferenceToRestoreData>> {
|
||||
return@nonBlocking findReferencesToRestore(file, indicator, sourceFileBasedReferences, referencesByRange)
|
||||
submitNonBlocking(project, indicator) {
|
||||
return@submitNonBlocking findReferencesToRestore(file, indicator, sourceFileBasedReferences, referencesByRange)
|
||||
}
|
||||
.withDocumentsCommitted(project)
|
||||
//.cancelWith(indicator)
|
||||
.submit(AppExecutorUtil.getAppExecutorService())
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -11,12 +11,16 @@ import com.intellij.codeInsight.hint.HintManagerImpl
|
||||
import com.intellij.codeInsight.hint.HintUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.application.ReadAction.nonBlocking
|
||||
import com.intellij.openapi.command.WriteCommandAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.LightweightHint
|
||||
import com.intellij.util.ArrayUtil
|
||||
import com.intellij.util.concurrency.AppExecutorUtil
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.concurrency.CancellablePromise
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -26,6 +30,7 @@ import java.util.*
|
||||
import javax.swing.event.HyperlinkEvent
|
||||
import javax.swing.event.HyperlinkListener
|
||||
|
||||
// BUNCH 192
|
||||
object ReviewAddedImports {
|
||||
@get:TestOnly
|
||||
var importsToBeReviewed: Collection<String> = emptyList()
|
||||
@@ -103,5 +108,12 @@ object ReviewAddedImports {
|
||||
KotlinImportOptimizer.replaceImports(file, newImports)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
internal fun <T> submitNonBlocking(project: Project, indicator: ProgressIndicator, block: () -> T): CancellablePromise<T> =
|
||||
nonBlocking<T> {
|
||||
return@nonBlocking block()
|
||||
}
|
||||
.withDocumentsCommitted(project)
|
||||
.cancelWith(indicator)
|
||||
.submit(AppExecutorUtil.getAppExecutorService())
|
||||
@@ -1,72 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.codeInsight
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightBundle
|
||||
import com.intellij.codeInsight.CodeInsightSettings
|
||||
import com.intellij.codeInsight.hint.HintManager
|
||||
import com.intellij.codeInsight.hint.HintManagerImpl
|
||||
import com.intellij.codeInsight.hint.HintUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.command.WriteCommandAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.LightweightHint
|
||||
import com.intellij.util.ArrayUtil
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.ImportPath
|
||||
import java.util.*
|
||||
import javax.swing.event.HyperlinkEvent
|
||||
import javax.swing.event.HyperlinkListener
|
||||
|
||||
object ReviewAddedImports {
|
||||
@get:TestOnly
|
||||
var importsToBeReviewed: Collection<String> = emptyList()
|
||||
|
||||
@get:TestOnly
|
||||
var importsToBeDeleted: Collection<String> = emptyList()
|
||||
|
||||
fun reviewAddedImports(
|
||||
project: Project,
|
||||
editor: Editor,
|
||||
file: KtFile,
|
||||
imported: TreeSet<String>
|
||||
) {
|
||||
if (CodeInsightSettings.getInstance().ADD_IMPORTS_ON_PASTE == CodeInsightSettings.YES &&
|
||||
!imported.isEmpty()
|
||||
) {
|
||||
if (ApplicationManager.getApplication().isUnitTestMode) {
|
||||
importsToBeReviewed = imported
|
||||
removeImports(project, file, importsToBeDeleted)
|
||||
return
|
||||
}
|
||||
// there is actual no such functionality in 191
|
||||
}
|
||||
}
|
||||
|
||||
private fun removeImports(
|
||||
project: Project,
|
||||
file: KtFile,
|
||||
importsToRemove: Collection<String>
|
||||
) {
|
||||
if (importsToRemove.isEmpty()) return
|
||||
|
||||
WriteCommandAction.runWriteCommandAction(project, KotlinBundle.message("revert.applied.imports"), null, Runnable {
|
||||
val newImports = file.importDirectives.mapNotNull {
|
||||
val importedFqName = it.importedFqName ?: return@mapNotNull null
|
||||
if (importsToRemove.contains(importedFqName.asString())) return@mapNotNull null
|
||||
ImportPath(importedFqName, it.isAllUnder, it.aliasName?.let { alias -> Name.identifier(alias) })
|
||||
}
|
||||
KotlinImportOptimizer.replaceImports(file, newImports)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,12 +12,16 @@ import com.intellij.codeInsight.hint.HintManagerImpl
|
||||
import com.intellij.codeInsight.hint.HintUtil
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.application.ReadAction.nonBlocking
|
||||
import com.intellij.openapi.command.WriteCommandAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.LightweightHint
|
||||
import com.intellij.util.ArrayUtil
|
||||
import com.intellij.util.concurrency.AppExecutorUtil
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.concurrency.CancellablePromise
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -27,6 +31,7 @@ import java.util.*
|
||||
import javax.swing.event.HyperlinkEvent
|
||||
import javax.swing.event.HyperlinkListener
|
||||
|
||||
// BUNCH 192
|
||||
object ReviewAddedImports {
|
||||
@get:TestOnly
|
||||
var importsToBeReviewed: Collection<String> = emptyList()
|
||||
@@ -68,5 +73,11 @@ object ReviewAddedImports {
|
||||
KotlinImportOptimizer.replaceImports(file, newImports)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
internal fun <T> submitNonBlocking(project: Project, indicator: ProgressIndicator, block: () -> T): CancellablePromise<T> =
|
||||
nonBlocking<T> {
|
||||
return@nonBlocking block()
|
||||
}
|
||||
.withDocumentsCommitted(project)
|
||||
.submit(AppExecutorUtil.getAppExecutorService())
|
||||
Reference in New Issue
Block a user