Skip whitespaces as context elements of codeFragmnets
#KT-10171 Fixed
This commit is contained in:
@@ -151,9 +151,16 @@ class KotlinCodeFragmentFactory: CodeFragmentFactory() {
|
|||||||
val containingFile = elementAt.containingFile
|
val containingFile = elementAt.containingFile
|
||||||
if (containingFile !is KtFile) return null
|
if (containingFile !is KtFile) return null
|
||||||
|
|
||||||
var result = PsiTreeUtil.findElementOfClassAtOffset(containingFile, elementAt.textOffset, javaClass<KtExpression>(), false)
|
// elementAt can be PsiWhiteSpace when codeFragment is created from line start offset (in case of first opening EE window)
|
||||||
|
val lineStartOffset = if (elementAt is PsiWhiteSpace || elementAt is PsiComment) {
|
||||||
|
PsiTreeUtil.skipSiblingsForward(elementAt, PsiWhiteSpace::class.java, PsiComment::class.java)?.textOffset ?: elementAt.textOffset
|
||||||
|
} else {
|
||||||
|
elementAt.textOffset
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = PsiTreeUtil.findElementOfClassAtOffset(containingFile, lineStartOffset, javaClass<KtExpression>(), false)
|
||||||
if (result.check()) {
|
if (result.check()) {
|
||||||
return CodeInsightUtils.getTopmostElementAtOffset(result!!, result.textOffset, KtExpression::class.java)
|
return CodeInsightUtils.getTopmostElementAtOffset(result!!, lineStartOffset, KtExpression::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
result = KotlinEditorTextProvider.findExpressionInner(elementAt, true)
|
result = KotlinEditorTextProvider.findExpressionInner(elementAt, true)
|
||||||
|
|||||||
Reference in New Issue
Block a user