From 6c893cfc13a2dafefe07857efbb7af3cd93afa81 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 13 Jan 2017 14:56:52 -0800 Subject: [PATCH] PT_137299017 fix and tests (extra space added in front of value completion) --- .../yaml/completion/YTypeAssistContext.java | 6 +++- .../boot/test/ApplicationYamlEditorTest.java | 33 +++++++++++++++++++ .../manifest/yaml/ManifestYamlEditorTest.java | 16 +++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java index 238d56c0a..18df49ba0 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YTypeAssistContext.java @@ -149,8 +149,12 @@ public class YTypeAssistContext extends AbstractYamlAssistContext { for (YValueHint value : values) { double score = FuzzyMatcher.matchScore(query, value.getValue()); if (score!=0 && !value.equals(query)) { + int queryStart = offset-query.length(); DocumentEdits edits = new DocumentEdits(doc.getDocument()); - edits.delete(offset-query.length(), offset); + edits.delete(queryStart, offset); + if (!Character.isWhitespace(doc.getChar(queryStart))) { + edits.insert(offset, " "); + } edits.insert(offset, value.getValue()); completions.add(completionFactory().valueProposal(value.getValue(), query, value.getLabel(), type, score, edits, typeUtil)); } diff --git a/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java b/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java index b818b3f6c..860baf75d 100644 --- a/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java +++ b/vscode-extensions/vscode-boot-properties/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java @@ -3592,6 +3592,39 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest { "com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT" ); } + + @Test public void PT_137299017_extra_space_wth_bean_property_value_completion() throws Exception { + useProject(createPredefinedMavenProject("enums-boot-1.3.2-app")); + data("color", "demo.ColorData", null, "colorful stuff"); + + assertCompletions( + "color:\n" + + " next:<*>" + , //==> + "color:\n" + + " next: blue<*>" + , // == + "color:\n" + + " next: green<*>" + , // == + "color:\n" + + " next: red<*>" + ); + } + + @Test public void PT_137299017_extra_space_wth_index_property_value_completion() throws Exception { + defaultTestData(); + assertCompletions( + "flyway:\n"+ + " enabled:<*>" + , // ==> + "flyway:\n"+ + " enabled: false<*>" + , // == + "flyway:\n"+ + " enabled: true<*>" + ); + } ///////////////// cruft //////////////////////////////////////////////////////// diff --git a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java index 10f3c5b7d..2e4e1f639 100644 --- a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java +++ b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java @@ -501,6 +501,22 @@ public class ManifestYamlEditorTest { ); } + @Test public void PT_137299017_extra_space_with_completion() throws Exception { + assertCompletions( + "applications:\n" + + "- name: foo\n" + + " random-route:<*>" + , // ==> + "applications:\n" + + "- name: foo\n" + + " random-route: false<*>" + , // -- + "applications:\n" + + "- name: foo\n" + + " random-route: true<*>" + ); + } + ////////////////////////////////////////////////////////////////////////////// private void assertCompletions(String textBefore, String... textAfter) throws Exception {