diff --git a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleManager.java b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleManager.java index 1d31363199f9..19196becf9a2 100644 --- a/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleManager.java +++ b/platform/lang-api/src/com/intellij/psi/codeStyle/CodeStyleManager.java @@ -18,7 +18,6 @@ package com.intellij.psi.codeStyle; import com.intellij.lang.ASTNode; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; @@ -191,7 +190,7 @@ public abstract class CodeStyleManager { * was not possible to calculate the indent. */ @Nullable - public abstract String getLineIndent(@NotNull Editor editor); + public abstract String getLineIndent(@NotNull Document document, int offset); /** * @deprecated diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java index aae13c81933b..a8a95525c41d 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleFacadeImpl.java @@ -20,7 +20,7 @@ package com.intellij.psi.impl.source.codeStyle; import com.intellij.codeStyle.CodeStyleFacade; -import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.project.Project; @@ -45,9 +45,9 @@ public class CodeStyleFacadeImpl extends CodeStyleFacade { } @Nullable - public String getLineIndent(@NotNull final Editor editor) { + public String getLineIndent(@NotNull final Document document, int offset) { if (myProject == null) return null; - return CodeStyleManager.getInstance(myProject).getLineIndent(editor); + return CodeStyleManager.getInstance(myProject).getLineIndent(document, offset); } public String getLineSeparator() { diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java index c4949f1ecc8b..ead604b40bc3 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/codeStyle/CodeStyleManagerImpl.java @@ -340,14 +340,8 @@ public class CodeStyleManagerImpl extends CodeStyleManager { } @Nullable - public String getLineIndent(@NotNull Editor editor) { - Document doc = editor.getDocument(); - int offset = editor.getCaretModel().getOffset(); - if (offset >= doc.getTextLength()) { - return ""; - } - - PsiFile file = PsiDocumentManager.getInstance(myProject).getPsiFile(doc); + public String getLineIndent(@NotNull Document document, int offset) { + PsiFile file = PsiDocumentManager.getInstance(myProject).getPsiFile(document); if (file == null) return ""; return getLineIndent(file, offset); diff --git a/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java b/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java index 26d492928524..8b424cce0ca4 100644 --- a/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java +++ b/platform/platform-api/src/com/intellij/codeStyle/CodeStyleFacade.java @@ -20,7 +20,7 @@ package com.intellij.codeStyle; import com.intellij.openapi.components.ServiceManager; -import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.options.Configurable; import com.intellij.openapi.project.Project; @@ -38,16 +38,16 @@ public abstract class CodeStyleFacade { } /** - * Calculates the indent that should be used for the current line in the specified - * editor. + * Calculates the indent that should be used for the line at specified offset in the specified + * document. * - * @param editor the editor for which the indent should be calculated. + * @param document the document for which the indent should be calculated. + * @param offset the caret offset in the editor. * @return the indent string (containing of tabs and/or white spaces), or null if it * was not possible to calculate the indent. */ @Nullable - public abstract String getLineIndent(@NotNull Editor editor); - + public abstract String getLineIndent(@NotNull Document document, int offset); public abstract int getIndentSize(FileType fileType); diff --git a/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java b/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java index becee264af2b..a8cf37d2efa6 100644 --- a/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java @@ -291,7 +291,8 @@ public class EditorModificationUtil { final int caretOffset = editor.getCaretModel().getOffset(); boolean atLineStart = caretOffset >= doc.getTextLength() || doc.getLineStartOffset(doc.getLineNumber(caretOffset)) == caretOffset; if (atLineStart && project != null) { - String properIndent = CodeStyleFacade.getInstance(project).getLineIndent(editor); + int offset = editor.getCaretModel().getOffset(); + String properIndent = offset >= doc.getTextLength() ? "" : CodeStyleFacade.getInstance(project).getLineIndent(doc, offset); if (properIndent != null) { int tabSize = editor.getSettings().getTabSize(project); for (int i = 0; i < properIndent.length(); i++) { diff --git a/platform/platform-impl/src/com/intellij/codeStyle/DefaultCodeStyleFacade.java b/platform/platform-impl/src/com/intellij/codeStyle/DefaultCodeStyleFacade.java index 8d29e682931c..bf748ab945ba 100644 --- a/platform/platform-impl/src/com/intellij/codeStyle/DefaultCodeStyleFacade.java +++ b/platform/platform-impl/src/com/intellij/codeStyle/DefaultCodeStyleFacade.java @@ -19,7 +19,7 @@ */ package com.intellij.codeStyle; -import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.options.Configurable; import org.jetbrains.annotations.NotNull; @@ -31,7 +31,7 @@ public class DefaultCodeStyleFacade extends CodeStyleFacade { } @Nullable - public String getLineIndent(@NotNull final Editor editor) { + public String getLineIndent(@NotNull final Document document, int offset) { return null; }