From d479de3da7379ba8a8c32f9ee7ab19a32029d14f Mon Sep 17 00:00:00 2001 From: nsingh Date: Thu, 19 Jan 2017 14:15:27 -0800 Subject: [PATCH] Further changes to error completion proposal --- .../yaml/completion/CompletionFactory.java | 5 +- .../completion/DefaultCompletionFactory.java | 46 ++++++++++++++++--- .../yaml/completion/YTypeAssistContext.java | 2 +- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java index 5f7b185b5..e70a162da 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/CompletionFactory.java @@ -33,8 +33,7 @@ public interface CompletionFactory { * @param query * @param type * @param edits - * @param typeUtil - * @return + * @return non-null proposal */ - ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits, YTypeUtil typeUtil); + ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits); } diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java index 8e22dbb69..5c583bb95 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/DefaultCompletionFactory.java @@ -15,7 +15,6 @@ import org.eclipse.lsp4j.CompletionItemKind; import org.springframework.ide.vscode.commons.languageserver.completion.DocumentEdits; import org.springframework.ide.vscode.commons.languageserver.completion.ICompletionProposal; import org.springframework.ide.vscode.commons.languageserver.completion.ScoreableProposal; -import org.springframework.ide.vscode.commons.util.FuzzyMatcher; import org.springframework.ide.vscode.commons.util.Renderable; import org.springframework.ide.vscode.commons.util.text.IDocument; import org.springframework.ide.vscode.commons.yaml.hover.YPropertyInfoTemplates; @@ -25,6 +24,9 @@ import org.springframework.ide.vscode.commons.yaml.schema.YTypedProperty; public class DefaultCompletionFactory implements CompletionFactory { + private static final String EMPTY_VALUE = ""; + private static final int ERROR_COMPLETION_SCORE = -10000000; + public static class BeanPropertyProposal extends ScoreableProposal { private IDocument doc; @@ -146,10 +148,42 @@ public class DefaultCompletionFactory implements CompletionFactory { } @Override - public ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits, - YTypeUtil typeUtil) { - String value = ""; // Empty value for the proposal. Purpose is to show a message with no value to fill in. - double score = FuzzyMatcher.matchScore(query, value); - return new ValueProposal(value, query, message, type, score, edits, typeUtil); + public ICompletionProposal errorMessage(String message, String query, YType type, DocumentEdits edits) { + final String value = EMPTY_VALUE; // Empty value for the proposal. Purpose is to show a message with no value to fill in. + final double score = ERROR_COMPLETION_SCORE; + final Renderable documentation = null; + final String niceDescription = message; + return new ScoreableProposal() { + + @Override + public DocumentEdits getTextEdit() { + return edits; + } + + @Override + public String getLabel() { + return value; + } + + @Override + public CompletionItemKind getKind() { + return CompletionItemKind.Value; + } + + @Override + public Renderable getDocumentation() { + return documentation; + } + + @Override + public String getDetail() { + return niceDescription; + } + + @Override + public double getBaseScore() { + return score; + } + }; } } 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 e07c817ee..7920dff1d 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 @@ -155,7 +155,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext { values = typeUtil.getHintValues(type, getSchemaContext()); } catch (Exception e) { DocumentEdits edits = new DocumentEdits(doc.getDocument()); - return ImmutableList.of(completionFactory().errorMessage(ExceptionUtil.getMessage(e), query, type, edits, typeUtil)); + return ImmutableList.of(completionFactory().errorMessage(ExceptionUtil.getMessage(e), query, type, edits)); } if (values!=null) { ArrayList completions = new ArrayList<>();