diff --git a/platform/core-impl/src/com/intellij/util/DocumentUtil.java b/platform/core-impl/src/com/intellij/util/DocumentUtil.java index 2218db336744..1d62a3149dfb 100644 --- a/platform/core-impl/src/com/intellij/util/DocumentUtil.java +++ b/platform/core-impl/src/com/intellij/util/DocumentUtil.java @@ -133,4 +133,14 @@ public final class DocumentUtil { public static int getNextCodePointOffset(@NotNull Document document, int offset) { return offset + (isSurrogatePair(document, offset) ? 2 : 1); } + + public static boolean isLineEmpty(@NotNull Document document, final int line) { + final CharSequence chars = document.getCharsSequence(); + int start = document.getLineStartOffset(line); + int end = Math.min(document.getLineEndOffset(line), document.getTextLength() - 1); + for (int i = start; i <= end; i++) { + if (!Character.isWhitespace(chars.charAt(i))) return false; + } + return true; + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/generation/CommentByLineCommentHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/generation/CommentByLineCommentHandler.java index 9f54c79003b8..1f0d05eaf3d1 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/generation/CommentByLineCommentHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/generation/CommentByLineCommentHandler.java @@ -119,7 +119,7 @@ public class CommentByLineCommentHandler extends MultiCaretCodeInsightActionHand startOffset == document.getLineStartOffset(document.getLineNumber(startOffset)) && endOffset == document.getLineEndOffset(document.getLineNumber(endOffset - 1)) + 1; boolean startingNewLineComment = !hasSelection - && isLineEmpty(document, document.getLineNumber(startOffset)) + && DocumentUtil.isLineEmpty(document, document.getLineNumber(startOffset)) && !Comparing.equal(IdeActions.ACTION_COMMENT_LINE, ActionManagerEx.getInstanceEx().getPrevPreformedActionId()); currentBlock.caretUpdate = startingNewLineComment ? CaretUpdate.PUT_AT_COMMENT_START : @@ -172,7 +172,7 @@ public class CommentByLineCommentHandler extends MultiCaretCodeInsightActionHand } block.commenters[line - startLine] = commenter; - if (!isLineCommented(block, line, commenter) && (singleline || !isLineEmpty(document, line))) { + if (!isLineCommented(block, line, commenter) && (singleline || !DocumentUtil.isLineEmpty(document, line))) { allLinesCommented = false; if (commenter instanceof IndentedCommenter) { final Boolean value = ((IndentedCommenter)commenter).forceIndentedLineComment(); @@ -306,16 +306,6 @@ public class CommentByLineCommentHandler extends MultiCaretCodeInsightActionHand return blockSuitableCommenter; } - private static boolean isLineEmpty(Document document, final int line) { - final CharSequence chars = document.getCharsSequence(); - int start = document.getLineStartOffset(line); - int end = Math.min(document.getLineEndOffset(line), document.getTextLength() - 1); - for (int i = start; i <= end; i++) { - if (!Character.isWhitespace(chars.charAt(i))) return false; - } - return true; - } - private static boolean isLineCommented(Block block, final int line, final Commenter commenter) { boolean commented; int lineEndForBlockCommenting = -1; diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackwardParagraphAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackwardParagraphAction.java index 3c52a0c39737..2fcf6f110fb8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackwardParagraphAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/BackwardParagraphAction.java @@ -7,10 +7,11 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorModificationUtil; import com.intellij.openapi.editor.actionSystem.EditorAction; import com.intellij.openapi.editor.actionSystem.EditorActionHandler; -import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static com.intellij.util.DocumentUtil.isLineEmpty; + /** * Emulates Emacs 'backward-paragraph' action */ @@ -62,10 +63,5 @@ public class BackwardParagraphAction extends EditorAction { caret.moveToOffset(targetOffset); EditorModificationUtil.scrollToCaret(editor); } - - private static boolean isLineEmpty(Document document, int line) { - return StringUtil.equalsIgnoreWhitespaces( - document.getImmutableCharSequence().subSequence(document.getLineStartOffset(line), document.getLineEndOffset(line)), ""); - } } } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/actions/ForwardParagraphAction.java b/platform/platform-impl/src/com/intellij/openapi/editor/actions/ForwardParagraphAction.java index ee91a1dc1f5b..5b162d02d30f 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/actions/ForwardParagraphAction.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/actions/ForwardParagraphAction.java @@ -7,10 +7,11 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorModificationUtil; import com.intellij.openapi.editor.actionSystem.EditorAction; import com.intellij.openapi.editor.actionSystem.EditorActionHandler; -import com.intellij.openapi.util.text.StringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static com.intellij.util.DocumentUtil.isLineEmpty; + /** * Emulates Emacs 'forward-paragraph' action */ @@ -52,10 +53,5 @@ public class ForwardParagraphAction extends EditorAction { caret.moveToOffset(targetOffset); EditorModificationUtil.scrollToCaret(editor); } - - private static boolean isLineEmpty(Document document, int line) { - return StringUtil.equalsIgnoreWhitespaces( - document.getImmutableCharSequence().subSequence(document.getLineStartOffset(line), document.getLineEndOffset(line)), ""); - } } }