From 81f905f18a7c999c73ec4cef3e159ae4ebafdd29 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Wed, 4 Mar 2015 12:07:42 +0300 Subject: [PATCH] Do now wrap on dot in ellipsis (IDEA-137107) --- .../java/JavaLineWrapPositionStrategy.java | 34 +++++++++++++++++ .../psi/formatter/java/JavaLineWrapTest.java | 37 +++++++++++++++++++ resources/src/META-INF/IdeaPlugin.xml | 2 +- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 java/java-impl/src/com/intellij/psi/formatter/java/JavaLineWrapPositionStrategy.java create mode 100644 java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaLineWrapTest.java diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaLineWrapPositionStrategy.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaLineWrapPositionStrategy.java new file mode 100644 index 000000000000..ea0626393848 --- /dev/null +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaLineWrapPositionStrategy.java @@ -0,0 +1,34 @@ +/* + * Copyright 2000-2015 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.editor.DefaultLineWrapPositionStrategy; +import com.intellij.openapi.editor.Document; +import org.jetbrains.annotations.NotNull; + +public class JavaLineWrapPositionStrategy extends DefaultLineWrapPositionStrategy { + + @Override + protected boolean canUseOffset(@NotNull Document document, int offset, boolean virtual) { + CharSequence chars = document.getCharsSequence(); + if (chars.charAt(offset) == '.') { + if (offset > 0 && chars.charAt(offset - 1) == '.' || offset + 1 < chars.length() && chars.charAt(offset + 1) == '.') { + return false; + } + } + return true; + } +} diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaLineWrapTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaLineWrapTest.java new file mode 100644 index 000000000000..b76cb2b8396f --- /dev/null +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaLineWrapTest.java @@ -0,0 +1,37 @@ +/* + * Copyright 2000-2015 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.editor.AbstractLineWrapPositionStrategyTest; +import org.junit.Before; +import org.junit.Test; + +public class JavaLineWrapTest extends AbstractLineWrapPositionStrategyTest { + private JavaLineWrapPositionStrategy myLineWrapStrategy; + + @Override + @Before + public void setUp() { + super.setUp(); + myLineWrapStrategy = new JavaLineWrapPositionStrategy(); + } + + @Test + public void testNoWrapOnVarArgs() throws Exception { + String document = "void method(String p1, String p2, Boolean b1, String...args) {}"; + doTest(myLineWrapStrategy, document, false); + } +} diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index b9db52d3b9eb..42045ae3a923 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -1053,7 +1053,7 @@ - +