FIR IDE: introduce infrastructure for HL based inspections & intentions
This commit is contained in:
+11
-2
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||
abstract class SelfTargetingIntention<TElement : PsiElement>(
|
||||
val elementType: Class<TElement>,
|
||||
@Nls private var textGetter: () -> String,
|
||||
@Nls private val familyNameGetter: () -> String = textGetter,
|
||||
@Nls private var familyNameGetter: () -> String = textGetter,
|
||||
) : IntentionAction {
|
||||
@Deprecated("Replace with primary constructor", ReplaceWith("SelfTargetingIntention<TElement>(elementType, { text }, { familyName })"))
|
||||
constructor(
|
||||
@@ -48,6 +48,11 @@ abstract class SelfTargetingIntention<TElement : PsiElement>(
|
||||
this.textGetter = textGetter
|
||||
}
|
||||
|
||||
protected fun setFamilyNameGetter(@Nls familyNameGetter: () -> String) {
|
||||
this.familyNameGetter = familyNameGetter
|
||||
}
|
||||
|
||||
|
||||
final override fun getText() = textGetter()
|
||||
final override fun getFamilyName() = familyNameGetter()
|
||||
|
||||
@@ -55,6 +60,10 @@ abstract class SelfTargetingIntention<TElement : PsiElement>(
|
||||
|
||||
abstract fun applyTo(element: TElement, editor: Editor?)
|
||||
|
||||
open fun applyTo(element: TElement, project: Project, editor: Editor?) {
|
||||
applyTo(element, editor)
|
||||
}
|
||||
|
||||
fun getTarget(offset: Int, file: PsiFile): TElement? {
|
||||
val leaf1 = file.findElementAt(offset)
|
||||
val leaf2 = file.findElementAt(offset - 1)
|
||||
@@ -100,7 +109,7 @@ abstract class SelfTargetingIntention<TElement : PsiElement>(
|
||||
editor ?: return
|
||||
val target = getTarget(editor, file) ?: return
|
||||
if (!preparePsiElementForWriteIfNeeded(target)) return
|
||||
applyTo(target, editor)
|
||||
applyTo(target, project, editor)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user