Workaround for vscode 1.12 completion sorting issue.

This commit is contained in:
Kris De Volder
2017-05-10 12:37:38 -07:00
parent 09ee81301d
commit 6de4f75ecb
7 changed files with 105 additions and 21 deletions

View File

@@ -16,6 +16,7 @@ import java.util.concurrent.CompletableFuture;
import org.eclipse.lsp4j.CompletionList;
import org.eclipse.lsp4j.DiagnosticSeverity;
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter;
import org.springframework.ide.vscode.commons.languageserver.completion.VscodeCompletionEngineAdapter.LazyCompletionResolver;
import org.springframework.ide.vscode.commons.languageserver.hover.HoverInfoProvider;
import org.springframework.ide.vscode.commons.languageserver.hover.VscodeHoverEngineAdapter;
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
@@ -51,6 +52,7 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
private SchemaSpecificPieces forPipelines;
private SchemaSpecificPieces forTasks;
private final YamlQuickfixes yamlQuickfixes;
private final LazyCompletionResolver completionResolver = new LazyCompletionResolver(); //Set this to null to disable lazy completion resolving
private class SchemaSpecificPieces {
@@ -63,6 +65,7 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
SchemaBasedYamlAssistContextProvider contextProvider = new SchemaBasedYamlAssistContextProvider(schema);
YamlCompletionEngine yamlCompletionEngine = new YamlCompletionEngine(structureProvider, contextProvider, COMPLETION_OPTIONS);
this.completionEngine = new VscodeCompletionEngineAdapter(ConcourseLanguageServer.this, yamlCompletionEngine);
this.completionEngine.setLazyCompletionResolver(completionResolver);
HoverInfoProvider infoProvider = new YamlHoverInfoProvider(currentAsts, structureProvider, contextProvider);
this.hoverEngine = new VscodeHoverEngineAdapter(ConcourseLanguageServer.this, infoProvider);
@@ -80,6 +83,11 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
}
}
@Override
public boolean hasLazyCompletionResolver() {
return completionResolver!=null;
}
public ConcourseLanguageServer(YamlCompletionEngineOptions completionOptions) {
super("vscode-concourse");
this.COMPLETION_OPTIONS = completionOptions;
@@ -124,10 +132,9 @@ public class ConcourseLanguageServer extends SimpleLanguageServer {
}
return CompletableFuture.completedFuture(new CompletionList(false, ImmutableList.of()));
});
documents.onCompletionResolve(params -> {
//this is a bogus implementation. But its not currently used.
throw new IllegalStateException("Not implemented");
documents.onCompletionResolve(item -> {
completionResolver.resolveNow(item);
return CompletableFuture.completedFuture(item);
});
documents.onHover(params -> {
TextDocument doc = documents.get(params);

View File

@@ -45,7 +45,7 @@ public class ConcourseLanguageServerTest {
}
private void assertExpectedInitResult(InitializeResult initResult) {
assertThat(initResult.getCapabilities().getCompletionProvider().getResolveProvider()).isFalse();
assertThat(initResult.getCapabilities().getCompletionProvider().getResolveProvider()).isTrue();
assertThat(initResult.getCapabilities().getTextDocumentSync().getLeft()).isEqualTo(TextDocumentSyncKind.Incremental);
}