From 1c52202e3fd1fbdf9897aace9283a01f28ba4872 Mon Sep 17 00:00:00 2001 From: Vasily Pisar Date: Fri, 26 Feb 2016 15:19:13 +0300 Subject: [PATCH 1/3] CPP-4964 Quick definition for user commands and macros in CMake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit – fixing a bug when we showed more lines than we should (see https://youtrack.jetbrains.com/issue/CPP-4964#comment=27-1282383) --- .../codeInsight/hint/ImplementationViewComponent.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java index 0a8a4aae9a2a..2d654e125d72 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java @@ -446,7 +446,10 @@ public class ImplementationViewComponent extends JPanel { final ImplementationTextSelectioner implementationTextSelectioner = LanguageImplementationTextSelectioner.INSTANCE.forLanguage(elt.getLanguage()); int start = implementationTextSelectioner.getTextStartOffset(elt); - final int end = implementationTextSelectioner.getTextEndOffset(elt); + int end = implementationTextSelectioner.getTextEndOffset(elt); + while (end > start && StringUtil.endsWithLineBreak(doc.getCharsSequence().subSequence(start, end))) { + end--; + } final int lineStart = doc.getLineStartOffset(doc.getLineNumber(start)); final int lineEnd = end < doc.getTextLength() ? doc.getLineEndOffset(doc.getLineNumber(end)) : doc.getTextLength(); From 089dddf978c3ea189f6712070923b37cdb98cd5f Mon Sep 17 00:00:00 2001 From: Vasily Pisar Date: Tue, 1 Mar 2016 19:03:23 +0300 Subject: [PATCH 2/3] CPP-4964 Quick definition for user commands and macros in CMake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit – trivial, after-review refactoring --- .../codeInsight/hint/ImplementationViewComponent.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java index 2d654e125d72..9c2d86355019 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java @@ -50,6 +50,7 @@ import com.intellij.ui.components.JBScrollPane; import com.intellij.usages.UsageView; import com.intellij.util.DocumentUtil; import com.intellij.util.PairFunction; +import com.intellij.util.text.CharArrayUtil; import com.intellij.util.ui.JBUI; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -446,10 +447,10 @@ public class ImplementationViewComponent extends JPanel { final ImplementationTextSelectioner implementationTextSelectioner = LanguageImplementationTextSelectioner.INSTANCE.forLanguage(elt.getLanguage()); int start = implementationTextSelectioner.getTextStartOffset(elt); - int end = implementationTextSelectioner.getTextEndOffset(elt); - while (end > start && StringUtil.endsWithLineBreak(doc.getCharsSequence().subSequence(start, end))) { - end--; - } + + CharSequence rawDefinition = doc.getCharsSequence().subSequence(start, + implementationTextSelectioner.getTextEndOffset(elt)); + int end = CharArrayUtil.shiftBackward(rawDefinition, rawDefinition.length(), "\r\n"); // deleting trailing EOLs final int lineStart = doc.getLineStartOffset(doc.getLineNumber(start)); final int lineEnd = end < doc.getTextLength() ? doc.getLineEndOffset(doc.getLineNumber(end)) : doc.getTextLength(); From ca907554a6b2a6667ee7bd34ea7381470ac7b217 Mon Sep 17 00:00:00 2001 From: Vasily Pisar Date: Tue, 1 Mar 2016 20:20:31 +0300 Subject: [PATCH 3/3] CPP-4964 Quick definition for user commands and macros in CMake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit – trivial, after-review refactoring --- .../codeInsight/hint/ImplementationViewComponent.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java index 9c2d86355019..9710b7bf52ef 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hint/ImplementationViewComponent.java @@ -50,7 +50,6 @@ import com.intellij.ui.components.JBScrollPane; import com.intellij.usages.UsageView; import com.intellij.util.DocumentUtil; import com.intellij.util.PairFunction; -import com.intellij.util.text.CharArrayUtil; import com.intellij.util.ui.JBUI; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -447,10 +446,11 @@ public class ImplementationViewComponent extends JPanel { final ImplementationTextSelectioner implementationTextSelectioner = LanguageImplementationTextSelectioner.INSTANCE.forLanguage(elt.getLanguage()); int start = implementationTextSelectioner.getTextStartOffset(elt); - - CharSequence rawDefinition = doc.getCharsSequence().subSequence(start, - implementationTextSelectioner.getTextEndOffset(elt)); - int end = CharArrayUtil.shiftBackward(rawDefinition, rawDefinition.length(), "\r\n"); // deleting trailing EOLs + int end = implementationTextSelectioner.getTextEndOffset(elt); + CharSequence rawDefinition = doc.getCharsSequence().subSequence(start, end); + while (end > start && StringUtil.isLineBreak(rawDefinition.charAt(end - start - 1))) { // removing trailing EOLs from definition + end--; + } final int lineStart = doc.getLineStartOffset(doc.getLineNumber(start)); final int lineEnd = end < doc.getTextLength() ? doc.getLineEndOffset(doc.getLineNumber(end)) : doc.getTextLength();