Fix #137: Periodically analyze the selected file for diagnostics

This commit is contained in:
Akash Yadav
2022-03-23 15:31:20 +05:30
parent 8a674404c0
commit daf2bc0325
13 changed files with 297 additions and 49 deletions
@@ -20,6 +20,7 @@
package com.itsaky.androidide.lsp;
import android.view.View;
import com.blankj.utilcode.util.FileIOUtils;
import com.blankj.utilcode.util.FileUtils;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -31,6 +32,7 @@ import com.itsaky.androidide.adapters.SearchListAdapter;
import com.itsaky.androidide.app.StudioApp;
import com.itsaky.androidide.fragments.sheets.ProgressSheet;
import com.itsaky.androidide.interfaces.EditorActivityProvider;
import com.itsaky.androidide.language.IDELanguage;
import com.itsaky.androidide.models.DiagnosticGroup;
import com.itsaky.androidide.models.SearchResult;
import com.itsaky.androidide.tasks.TaskExecutor;
@@ -47,7 +49,7 @@ import com.itsaky.lsp.models.Location;
import com.itsaky.lsp.models.Range;
import com.itsaky.lsp.models.TextEdit;
import com.itsaky.toaster.Toaster;
import io.github.rosemoe.sora.text.Content;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
@@ -55,6 +57,8 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import io.github.rosemoe.sora.text.Content;
/** AndroidIDE specific implementation of the LanguageClient */
public class IDELanguageClientImpl implements ILanguageClient {
@@ -142,6 +146,17 @@ public class IDELanguageClientImpl implements ILanguageClient {
File file = result.getFile().toFile();
if (!file.exists() || !file.isFile()) return;
final var editorView = activity().getEditorForFile(file);
if (editorView != null) {
final var editor = editorView.getEditor();
if (editor != null) {
final var editorLanguage = editor.getEditorLanguage();
if (editorLanguage instanceof IDELanguage) {
((IDELanguage) editorLanguage).setDiagnostics(result.getDiagnostics());
}
}
}
diagnostics.put(file, result.getDiagnostics());
activity().setDiagnosticsAdapter(newDiagnosticsAdapter());
}