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
|
// Step 2. Find references to restore in a target file
|
||||||
return ProgressIndicatorUtils.awaitWithCheckCanceled(
|
return ProgressIndicatorUtils.awaitWithCheckCanceled(
|
||||||
nonBlocking<List<ReferenceToRestoreData>> {
|
submitNonBlocking(project, indicator) {
|
||||||
return@nonBlocking findReferencesToRestore(file, indicator, sourceFileBasedReferences, referencesByRange)
|
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.codeInsight.hint.HintUtil
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.application.ModalityState
|
import com.intellij.openapi.application.ModalityState
|
||||||
|
import com.intellij.openapi.application.ReadAction.nonBlocking
|
||||||
import com.intellij.openapi.command.WriteCommandAction
|
import com.intellij.openapi.command.WriteCommandAction
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
|
import com.intellij.openapi.progress.ProgressIndicator
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.ui.LightweightHint
|
import com.intellij.ui.LightweightHint
|
||||||
import com.intellij.util.ArrayUtil
|
import com.intellij.util.ArrayUtil
|
||||||
|
import com.intellij.util.concurrency.AppExecutorUtil
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
|
import org.jetbrains.concurrency.CancellablePromise
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -26,6 +30,7 @@ import java.util.*
|
|||||||
import javax.swing.event.HyperlinkEvent
|
import javax.swing.event.HyperlinkEvent
|
||||||
import javax.swing.event.HyperlinkListener
|
import javax.swing.event.HyperlinkListener
|
||||||
|
|
||||||
|
// BUNCH 192
|
||||||
object ReviewAddedImports {
|
object ReviewAddedImports {
|
||||||
@get:TestOnly
|
@get:TestOnly
|
||||||
var importsToBeReviewed: Collection<String> = emptyList()
|
var importsToBeReviewed: Collection<String> = emptyList()
|
||||||
@@ -103,5 +108,12 @@ object ReviewAddedImports {
|
|||||||
KotlinImportOptimizer.replaceImports(file, newImports)
|
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.codeInsight.hint.HintUtil
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.application.ModalityState
|
import com.intellij.openapi.application.ModalityState
|
||||||
|
import com.intellij.openapi.application.ReadAction.nonBlocking
|
||||||
import com.intellij.openapi.command.WriteCommandAction
|
import com.intellij.openapi.command.WriteCommandAction
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
|
import com.intellij.openapi.progress.ProgressIndicator
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.ui.LightweightHint
|
import com.intellij.ui.LightweightHint
|
||||||
import com.intellij.util.ArrayUtil
|
import com.intellij.util.ArrayUtil
|
||||||
|
import com.intellij.util.concurrency.AppExecutorUtil
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
|
import org.jetbrains.concurrency.CancellablePromise
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -27,6 +31,7 @@ import java.util.*
|
|||||||
import javax.swing.event.HyperlinkEvent
|
import javax.swing.event.HyperlinkEvent
|
||||||
import javax.swing.event.HyperlinkListener
|
import javax.swing.event.HyperlinkListener
|
||||||
|
|
||||||
|
// BUNCH 192
|
||||||
object ReviewAddedImports {
|
object ReviewAddedImports {
|
||||||
@get:TestOnly
|
@get:TestOnly
|
||||||
var importsToBeReviewed: Collection<String> = emptyList()
|
var importsToBeReviewed: Collection<String> = emptyList()
|
||||||
@@ -68,5 +73,11 @@ object ReviewAddedImports {
|
|||||||
KotlinImportOptimizer.replaceImports(file, newImports)
|
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