diff --git a/platform/lang-impl/src/com/intellij/psi/codeStyle/ExternalFormatProcessor.java b/platform/lang-impl/src/com/intellij/psi/codeStyle/ExternalFormatProcessor.java index ae668c183112..b9789f07eae0 100644 --- a/platform/lang-impl/src/com/intellij/psi/codeStyle/ExternalFormatProcessor.java +++ b/platform/lang-impl/src/com/intellij/psi/codeStyle/ExternalFormatProcessor.java @@ -4,9 +4,9 @@ package com.intellij.psi.codeStyle; import com.intellij.openapi.editor.Document; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.util.TextRange; -import com.intellij.psi.PsiDocumentManager; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; +import com.intellij.psi.*; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.PsiUtilCore; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -93,7 +93,14 @@ public interface ExternalFormatProcessor { PsiDocumentManager.getInstance(file.getProject()).commitDocument(document); if (!elementToFormat.isValid()) { final PsiElement elementAtStart = file.findElementAt(rangeAfterFormat.getStartOffset()); + final PsiElement elementAtEnd = file.findElementAt(rangeAfterFormat.getEndOffset() - 1); if (elementAtStart != null) { + if (elementAtEnd != null) { + PsiElement parent = PsiTreeUtil.findCommonParent(elementAtStart, elementAtEnd); + if (parent != null) { + return parent; + } + } return elementAtStart; } }