diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaAutoIndentLinesTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaAutoIndentLinesTest.java new file mode 100644 index 000000000000..e3f4fb8804a0 --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaAutoIndentLinesTest.java @@ -0,0 +1,33 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.psi.formatter.java; + +import com.intellij.openapi.actionSystem.IdeActions; +import com.intellij.openapi.editor.impl.AbstractEditorTest; +import com.intellij.testFramework.TestFileType; + +public class JavaAutoIndentLinesTest extends AbstractEditorTest { + public void testSelection() throws Exception { + init("class C {\n" + + "int a = 1;\n" + + "}", + TestFileType.JAVA); + executeAction(IdeActions.ACTION_EDITOR_AUTO_INDENT_LINES); + checkResultByText("class C {\n" + + " int a = 1;\n" + + "}"); + } +} diff --git a/platform/lang-impl/src/com/intellij/codeInsight/generation/AutoIndentLinesHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/generation/AutoIndentLinesHandler.java index 6d3e505ded6c..e8232ee7fe2c 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/generation/AutoIndentLinesHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/generation/AutoIndentLinesHandler.java @@ -45,12 +45,10 @@ public class AutoIndentLinesHandler implements CodeInsightActionHandler { Document document = editor.getDocument(); int startOffset; int endOffset; - RangeMarker selectionEndMarker = null; - if (editor.getSelectionModel().hasSelection()){ + boolean hasSelection = editor.getSelectionModel().hasSelection(); + if (hasSelection){ startOffset = editor.getSelectionModel().getSelectionStart(); - endOffset = editor.getSelectionModel().getSelectionEnd(); - selectionEndMarker = document.createRangeMarker(endOffset, endOffset); - endOffset -= 1; + endOffset = editor.getSelectionModel().getSelectionEnd() - 1; } else{ startOffset = endOffset = editor.getCaretModel().getOffset(); @@ -65,7 +63,7 @@ public class AutoIndentLinesHandler implements CodeInsightActionHandler { LOG.error(e); } - if (selectionEndMarker == null){ + if (!hasSelection){ if (line1 < document.getLineCount() - 1){ if (document.getLineStartOffset(line1 + 1) + col >= document.getTextLength()) { col = document.getLineEndOffset(line1 + 1) - document.getLineStartOffset(line1 + 1); @@ -76,11 +74,6 @@ public class AutoIndentLinesHandler implements CodeInsightActionHandler { editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); } } - else{ - if (!selectionEndMarker.isValid()) return; - endOffset = selectionEndMarker.getEndOffset(); - editor.getSelectionModel().setSelection(startOffset, endOffset); - } } private static void adjustLineIndent(PsiFile file, diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java index ede958188b5a..849f46366276 100644 --- a/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java +++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/IdeActions.java @@ -80,7 +80,7 @@ public interface IdeActions { @NonNls String ACTION_EDITOR_PREVIOUS_TEMPLATE_VARIABLE = "PreviousTemplateVariable"; @NonNls String ACTION_EDITOR_REFORMAT = "ReformatCode"; - + @NonNls String ACTION_EDITOR_AUTO_INDENT_LINES = "AutoIndentLines"; @NonNls String ACTION_COMMENT_LINE = "CommentByLineComment"; @NonNls String ACTION_COMMENT_BLOCK = "CommentByBlockComment";