mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[grazie] IDEA-298261 Don't glue together javadoc param name and description when removing a colon
GitOrigin-RevId: a166b9f083c00a6cb9ce2568df769b467a2a9937
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9a724b6a34
commit
c36c8c6db9
+11
-1
@@ -124,17 +124,27 @@ object GrazieReplaceTypoQuickFix {
|
||||
val commonSuffix =
|
||||
min(commonSuffixLength(suggestion, replacedText), min(suggestion.length, replacementRange.length) - commonPrefix)
|
||||
val localRange = TextRange(replacementRange.startOffset + commonPrefix, replacementRange.endOffset - commonSuffix)
|
||||
val replacement = suggestion.substring(commonPrefix, suggestion.length - commonSuffix)
|
||||
var replacement = suggestion.substring(commonPrefix, suggestion.length - commonSuffix)
|
||||
|
||||
val file = text.containingFile
|
||||
val spm = SmartPointerManager.getInstance(file.project)
|
||||
val shreds = text.intersection(text.textRangeToFile(localRange))
|
||||
if (shreds.isEmpty()) return emptyList()
|
||||
|
||||
if (replacement.isEmpty() && removalWouldGlueUnrelatedTokens(localRange, text)) {
|
||||
replacement = " ";
|
||||
}
|
||||
|
||||
val best = if (isWordMiddle(text, localRange.endOffset)) shreds.last() else shreds.first()
|
||||
return shreds.map { spm.createSmartPsiFileRangePointer(file, it) to (if (it === best) replacement else "") }
|
||||
}
|
||||
|
||||
private fun removalWouldGlueUnrelatedTokens(removedRange: TextRange, text: TextContent): Boolean {
|
||||
val prevFileIndex = text.textOffsetToFile(0) - 1
|
||||
return removedRange.endOffset < text.length && text[removedRange.endOffset].isLetterOrDigit() &&
|
||||
prevFileIndex > 0 && text.containingFile.viewProvider.contents[prevFileIndex].isLetterOrDigit()
|
||||
}
|
||||
|
||||
private fun isWordMiddle(text: CharSequence, index: Int) =
|
||||
index > 0 && index < text.length && Character.isLetter(text[index]) && Character.isLetter(text[index - 1])
|
||||
|
||||
|
||||
@@ -36,6 +36,12 @@ class JavaSupportTest : GrazieTestBase() {
|
||||
myFixture.checkResultByFile("ide/language/java/SplitLine_after.java")
|
||||
}
|
||||
|
||||
fun `test do not merge text with non-text`() {
|
||||
runHighlightTestForFile("ide/language/java/AccidentalMerge.java")
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Remove"))
|
||||
myFixture.checkResultByFile("ide/language/java/AccidentalMerge_after.java")
|
||||
}
|
||||
|
||||
fun `test long comment performance`() {
|
||||
PlatformTestUtil.startPerformanceTest("highlighting", 1000) {
|
||||
runHighlightTestForFile("ide/language/java/LongCommentPerformance.java")
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
class C {
|
||||
/**
|
||||
* @param a<warning descr="UNLIKELY_OPENING_PUNCTUATION"><caret>:</warning>here is some English text producing an error. And here's another sentence.
|
||||
*/
|
||||
void foo(int a){}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
class C {
|
||||
/**
|
||||
* @param a here is some English text producing an error. And here's another sentence.
|
||||
*/
|
||||
void foo(int a){}
|
||||
}
|
||||
Reference in New Issue
Block a user