use of org.eclipse.lsp4j.DiagnosticSeverity in project vscode-nextgenas by BowlerHatLLC.
the class ActionScriptTextDocumentService method addCompilerProblem.
private void addCompilerProblem(ICompilerProblem problem, PublishDiagnosticsParams publish) {
if (!flexLibSDKContainsFalconCompiler) {
if (problem.getClass().equals(FontEmbeddingNotSupported.class)) {
//ignore this error because the framework SDK can embed fonts
return;
}
}
Diagnostic diagnostic = new Diagnostic();
DiagnosticSeverity severity = LanguageServerUtils.getDiagnosticSeverityFromCompilerProblem(problem);
diagnostic.setSeverity(severity);
Range range = LanguageServerUtils.getRangeFromSourceLocation(problem);
if (range == null) {
//fall back to an empty range
range = new Range(new Position(), new Position());
}
diagnostic.setRange(range);
diagnostic.setMessage(problem.toString());
try {
Field field = problem.getClass().getDeclaredField("errorCode");
int errorCode = (int) field.get(problem);
diagnostic.setCode(Integer.toString(errorCode));
} catch (Exception e) {
//skip it
}
List<Diagnostic> diagnostics = publish.getDiagnostics();
diagnostics.add(diagnostic);
}
use of org.eclipse.lsp4j.DiagnosticSeverity in project sonarlint-core by SonarSource.
the class SonarLintLanguageServer method convert.
static Optional<Diagnostic> convert(Issue issue) {
if (issue.getStartLine() != null) {
Range range = position(issue);
Diagnostic diagnostic = new Diagnostic();
DiagnosticSeverity severity = severity(issue.getSeverity());
diagnostic.setSeverity(severity);
diagnostic.setRange(range);
diagnostic.setCode(issue.getRuleKey());
diagnostic.setMessage(issue.getMessage() + " (" + issue.getRuleKey() + ")");
diagnostic.setSource(SONARLINT_SOURCE);
return Optional.of(diagnostic);
}
return Optional.empty();
}
use of org.eclipse.lsp4j.DiagnosticSeverity in project sts4 by spring-projects.
the class SimpleLanguageServer method validateWith.
/**
* Convenience method. Subclasses can call this to use a {@link IReconcileEngine} ported
* from old STS codebase to validate a given {@link TextDocument} and publish Diagnostics.
*/
public void validateWith(TextDocumentIdentifier docId, IReconcileEngine engine) {
CompletableFuture<Void> reconcileSession = this.busyReconcile = new CompletableFuture<Void>();
// Log.debug("Reconciling BUSY");
SimpleTextDocumentService documents = getTextDocumentService();
int requestedVersion = documents.getDocument(docId.getUri()).getVersion();
// Avoid running in the same thread as lsp4j as it can result
// in long "hangs" for slow reconcile providers
Mono.fromRunnable(() -> {
TextDocument doc = documents.getDocument(docId.getUri()).copy();
if (requestedVersion != doc.getVersion()) {
// Do not bother reconciling if document contents is already stale.
return;
}
if (testListener != null) {
testListener.reconcileStarted(docId.getUri(), doc.getVersion());
}
IProblemCollector problems = new IProblemCollector() {
private LinkedHashSet<Diagnostic> diagnostics = new LinkedHashSet<>();
private List<Quickfix> quickfixes = new ArrayList<>();
@Override
public void endCollecting() {
documents.setQuickfixes(docId, quickfixes);
documents.publishDiagnostics(docId, diagnostics);
}
@Override
public void beginCollecting() {
diagnostics.clear();
}
@Override
public void checkPointCollecting() {
// publish what has been collected so far
documents.publishDiagnostics(docId, diagnostics);
}
@Override
public void accept(ReconcileProblem problem) {
try {
DiagnosticSeverity severity = getDiagnosticSeverity(problem);
if (severity != null) {
Diagnostic d = new Diagnostic();
d.setCode(problem.getCode());
d.setMessage(problem.getMessage());
Range rng = doc.toRange(problem.getOffset(), problem.getLength());
d.setRange(rng);
d.setSeverity(severity);
List<QuickfixData<?>> fixes = problem.getQuickfixes();
if (CollectionUtil.hasElements(fixes)) {
for (QuickfixData<?> fix : fixes) {
quickfixes.add(new Quickfix<>(CODE_ACTION_COMMAND_ID, d, fix));
}
}
diagnostics.add(d);
}
} catch (BadLocationException e) {
Log.warn("Invalid reconcile problem ignored", e);
}
}
};
// try {
// Thread.sleep(2000);
// } catch (InterruptedException e) {
// }
engine.reconcile(doc, problems);
}).onErrorResume(error -> {
Log.log(error);
return Mono.empty();
}).doFinally(ignore -> {
reconcileSession.complete(null);
// Log.debug("Reconciler DONE : "+this.busyReconcile.isDone());
}).subscribeOn(RECONCILER_SCHEDULER).subscribe();
}
Aggregations