From fb072bfa8c2859574c5b68b8b88558bab5ed5d7a Mon Sep 17 00:00:00 2001 From: aboyko Date: Wed, 28 Aug 2024 13:00:53 -0400 Subject: [PATCH] Enhancement to data queries inlay hints --- .../queries/JdtDataQueriesInlayHintsProvider.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JdtDataQueriesInlayHintsProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JdtDataQueriesInlayHintsProvider.java index 49e90fe7c..47cd7225d 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JdtDataQueriesInlayHintsProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/jpa/queries/JdtDataQueriesInlayHintsProvider.java @@ -11,6 +11,7 @@ package org.springframework.ide.vscode.boot.java.data.jpa.queries; import java.util.List; +import java.util.function.Predicate; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.CompilationUnit; @@ -87,7 +88,8 @@ public class JdtDataQueriesInlayHintsProvider implements JdtInlayHintsProvider { hint.setKind(InlayHintKind.Parameter); hint.setLabel(Either.forLeft(paramName)); hint.setPaddingLeft(true); - hint.setPosition(doc.toPosition(t.end())); + hint.setPaddingRight(true); + hint.setPosition(doc.toPosition(firstNonSkippedChar(doc, t.end(), c -> '%' != c))); collector.accept(hint); } @@ -100,5 +102,16 @@ public class JdtDataQueriesInlayHintsProvider implements JdtInlayHintsProvider { } } } + + private static int firstNonSkippedChar(TextDocument doc, int offset, Predicate skip) { + try { + int i = offset; + for (; i < doc.getLength() && !skip.test(doc.getChar(i)); i++) {} + return i; + } catch (BadLocationException e) { + // ignore - shouldn't happen + } + return doc.getLength(); + } }