Fixed issues related to Java Language Server

This commit is contained in:
Akash Yadav
2021-10-25 16:22:17 +05:30
parent f699877159
commit cb8540950e
7 changed files with 22 additions and 21 deletions
Binary file not shown.
@@ -164,11 +164,6 @@ public class LanguageServerWrapper implements IDELanguageServer {
this.service = service;
}
@Override
public CompletableFuture<List<SemanticHighlight>> semanticHighlights(SemanticHighlightsParams params) {
return CompletableFuture.completedFuture(Collections.singletonList((SemanticHighlight) null));
}
@Override
public CompletableFuture<List<CallHierarchyIncomingCall>> callHierarchyIncomingCalls(CallHierarchyIncomingCallsParams p1) {
return service.callHierarchyIncomingCalls(p1);
@@ -17,7 +17,7 @@ public class ToolsManager {
private static PreferenceManager prefs;
public static final int JLS_VERSION = 18;
public static final int JLS_VERSION = 21;
public static final int LOGSENDER_VERSION = 1;
public static final int CLEANER_VERSION = 1;
public static final int GRADLE_API_VERSION = 2;
@@ -228,7 +228,7 @@ public class HighlightRangeHelper {
}
private int containsStartPosition (List<Range> ranges, int line, int column) {
int index = binarySearchTypeFrom(ranges, line, column);
int index = binarySearchStartPosition(ranges, line, column);
if(index >= 0 && index < ranges.size()) {
return index;
}
@@ -236,7 +236,7 @@ public class HighlightRangeHelper {
return -1;
}
private int binarySearchTypeFrom(List<Range> ranges, int line, int column) {
private int binarySearchStartPosition(List<Range> ranges, int line, int column) {
int left = 0, right = ranges.size() - 1;
while (left <= right) {
@@ -10,7 +10,9 @@ import com.itsaky.androidide.syntax.lexer.tokens.TokenType;
import com.itsaky.androidide.utils.LSPUtils;
import com.itsaky.androidide.utils.Logger;
import com.itsaky.lsp.SemanticHighlight;
import com.itsaky.lsp.SemanticHighlightsParams;
import com.itsaky.lsp.services.IDELanguageServer;
import com.itsaky.lsp.services.IDETextDocumentService;
import io.github.rosemoe.editor.struct.BlockLine;
import io.github.rosemoe.editor.struct.Span;
import io.github.rosemoe.editor.text.CharPosition;
@@ -27,11 +29,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import org.antlr.v4.runtime.CharStreams;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.Position;
import org.eclipse.lsp4j.Range;
import org.eclipse.lsp4j.TextDocumentIdentifier;
public class JavaLexerImpl extends io.github.rosemoe.editor.langs.AbstractCodeAnalyzer {
@@ -47,6 +52,7 @@ public class JavaLexerImpl extends io.github.rosemoe.editor.langs.AbstractCodeAn
@Override
public void analyze(IDELanguageServer languageServer, File file, CharSequence content, TextAnalyzeResult colors, TextAnalyzer.AnalyzeThread.Delegate delegate) throws Exception {
final JavaLexerAnalyzer lexer = new JavaLexerAnalyzer((Content) content, colors, this.helper);
lexer.init();
while (delegate.shouldAnalyze()) {
@@ -60,6 +66,7 @@ public class JavaLexerImpl extends io.github.rosemoe.editor.langs.AbstractCodeAn
colors.determine(lexer.lastLine);
colors.setSuppressSwitch(lexer.maxSwitch + 10);
colors.setHexColors(lexer.lineColors);
}
@Override
@@ -69,6 +69,7 @@ import com.itsaky.androidide.lsp.IDELanguageClientImpl;
import com.itsaky.androidide.lsp.LSPProvider;
import com.itsaky.androidide.lsp.providers.CodeActionProvider;
import com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE;
import com.itsaky.androidide.utils.JSONUtility;
import com.itsaky.androidide.utils.Logger;
import com.itsaky.androidide.utils.Symbols;
import com.itsaky.androidide.utils.TypefaceUtils;
@@ -102,7 +103,6 @@ import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import org.eclipse.lsp4j.CodeAction;
import org.eclipse.lsp4j.CodeActionOptions;
@@ -135,6 +135,7 @@ import org.eclipse.lsp4j.TextDocumentIdentifier;
import org.eclipse.lsp4j.TextDocumentItem;
import org.eclipse.lsp4j.VersionedTextDocumentIdentifier;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import android.os.Handler;
/**
* CodeEditor is a editor that can highlight text regions by doing basic syntax analyzing
@@ -210,10 +211,14 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca
static final int ACTION_MODE_NONE = 0;
static final int ACTION_MODE_SEARCH_TEXT = 1;
static final int ACTION_MODE_SELECT_TEXT = 2;
private static final String LOG_TAG = "CodeEditor";
protected SymbolPairMatch mLanguageSymbolPairs;
Layout mLayout;
int mStartedActionMode;
private int mTabWidth;
private int mCursorPosition;
private int mInputType;
@@ -228,6 +233,7 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca
private float mInsertSelWidth;
private float mBlockLineWidth;
private float mLineInfoTextSize;
private long mLastEdited;
private boolean mWait;
private boolean mDrag;
private boolean mScalable;
@@ -302,6 +308,7 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca
private SymbolPairMatch mOverrideSymbolPairs;
private LongArrayList mPostDrawLineNumbers = new LongArrayList();
private CharPosition mLockedSelection;
EditorInputConnection mConnection;
KeyMetaStates mKeyMetaStates = new KeyMetaStates(this);
@@ -528,6 +535,7 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca
mPaintOther.setTypeface(Typeface.MONOSPACE);
mBuffer = new char[256];
mBuffer2 = new char[16];
mLastEdited = 0;
mStartedActionMode = ACTION_MODE_NONE;
setTextSize(DEFAULT_TEXT_SIZE);
setLineInfoTextSize(mPaint.getTextSize());
@@ -1488,6 +1496,7 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca
mPaint.setStrokeWidth(getDpUnit() * 1.4f);
final List<Diagnostic> diags = getEditorLanguage().getAnalyzer().findDiagnosticsContainingLine(line);
final int size = diags == null ? 0 : diags.size();
LOG.info("Diagnostics for line " + line, JSONUtility.prettyPrinter.toJson(diags), "size=" + size);
for(int i=0;i<size;i++) {
Diagnostic d = diags.get(i);
if(d == null) continue;
@@ -5015,6 +5024,7 @@ public class CodeEditor extends View implements ContentListener, TextAnalyzer.Ca
private void notifyChanged() {
if(mLanguageServer != null) {
mLastEdited = System.currentTimeMillis();
DidChangeTextDocumentParams p = didChangeParams();
if(p != null) {
mLanguageServer.getTextDocumentService().didChange(p);
@@ -1,17 +1,6 @@
package com.itsaky.lsp.services;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import com.itsaky.lsp.SemanticHighlight;
import com.itsaky.lsp.SemanticHighlightsParams;
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
import org.eclipse.lsp4j.services.TextDocumentService;
public interface IDETextDocumentService extends TextDocumentService{
@JsonRequest ("semanticHighlights")
CompletableFuture<List<SemanticHighlight>> semanticHighlights (SemanticHighlightsParams params) ;
public interface IDETextDocumentService extends TextDocumentService {
}