Try to shorten labels for boot property completions

Part 2: also do the same in application.yml

See: https://github.com/spring-projects/sts4/issues/361
This commit is contained in:
Kris De Volder
2019-09-05 16:10:01 -07:00
parent f7276a5683
commit 44e9532ea3
3 changed files with 98 additions and 2 deletions

View File

@@ -39,7 +39,7 @@ public interface ICompletionProposal {
default boolean isDeprecated() { return false; }
default ICompletionProposal dropLabelPrefix(int numberOfDroppedChars) {
default TransformedCompletion dropLabelPrefix(int numberOfDroppedChars) {
return new TransformedCompletion(this) {
@Override
protected String tranformLabel(String originalLabel) {

View File

@@ -450,6 +450,10 @@ public abstract class ApplicationYamlAssistContext extends AbstractYamlAssistCon
ScoreableProposal completion = completionFactory.property(
doc.getDocument(), edits, match, typeUtil
);
String prefix = indexNav.getPrefix();
if (StringUtil.hasText(prefix)) {
completion = completion.dropLabelPrefix(prefix.length()+1);
}
if (getContextRoot(doc).exists(YamlPath.fromProperty(match.data.getId()))) {
completion.deemphasize(DEEMP_EXISTS);
}

View File

@@ -71,6 +71,98 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
////////////////////////////////////////////////////////////////////////////////////////
@Test public void abbreviateLongPrefixCompletions() throws Exception {
//See: https://github.com/spring-projects/sts4/issues/361
Editor editor;
data("spring.data.jpa.very.long.foobar", "java.lang.String", null, null);
data("spring.data.jpa.very.long.barbar", "java.lang.String", null, null);
data("spring.data.jpa.very.long.foofoo", "java.lang.String", null, null);
data("spring.data.jpa.very.long.barfoo", "java.lang.String", null, null);
data("spring.data.jpa.very.long.foobar.more", "java.lang.String", null, null);
data("spring.data.jpa.very.long.barbar.more", "java.lang.String", null, null);
data("spring.data.jpa.very.long.foofoo.more", "java.lang.String", null, null);
data("spring.data.jpa.very.long.barfoo.more", "java.lang.String", null, null);
editor = newEditor(
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" bar<*>"
);
editor.assertCompletions(
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" long:\n" +
" barbar: <*>",
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" long:\n" +
" barfoo: <*>",
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" long:\n" +
" foobar: <*>",
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" long:\n" +
" barbar:\n"+
" more: <*>",
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" long:\n" +
" barfoo:\n"+
" more: <*>",
"spring:\n" +
" data:\n" +
" jpa:\n" +
" very:\n" +
" long:\n" +
" foobar:\n"+
" more: <*>"
);
editor.assertCompletionLabels(
"long.barbar",
"long.barfoo",
"long.foobar",
"long.barbar.more",
"long.barfoo.more",
"long.foobar.more"
);
editor = newEditor(
"spring:\n" +
" data:\n" +
" jpa:\n" +
" vr<*>"
);
editor.assertCompletionLabels(
"very.long.barbar",
"very.long.barfoo",
"very.long.foobar",
"very.long.foofoo",
"very.long.barbar.more",
"very.long.barfoo.more",
"very.long.foobar.more",
"very.long.foofoo.more"
);
}
@Test public void bug_GH_327() throws Exception {
//See https://github.com/spring-projects/sts4/issues/327
data("spring.resources.static-locations", "java.lang.Boolean", null, "Blah");
@@ -3358,7 +3450,7 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
" p<*>"
);
editor.assertCompletionLabels("server.port");
editor.assertCompletionLabels("port");