From 9892516dc361baf5a2e1b40435659aa33557ce28 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Tue, 21 Jun 2022 19:02:36 +0530 Subject: [PATCH] Extracted line comment handling logic to base analyzer class --- .../BaseIncrementalAnalyzeManager.java | 21 +++++++++++ .../androidide/language/java/JavaAnalyzer.kt | 36 ++----------------- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java b/app/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java index f11f82a72..2a5676feb 100644 --- a/app/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java +++ b/app/src/main/java/com/itsaky/androidide/language/incremental/BaseIncrementalAnalyzeManager.java @@ -19,6 +19,9 @@ package com.itsaky.androidide.language.incremental; import static com.itsaky.androidide.language.incremental.LineState.INCOMPLETE; import static com.itsaky.androidide.language.incremental.LineState.NORMAL; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.FIXME_COMMENT; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.TODO_COMMENT; +import static com.itsaky.androidide.syntax.colorschemes.SchemeAndroidIDE.withoutCompletion; import androidx.annotation.NonNull; @@ -158,6 +161,24 @@ public abstract class BaseIncrementalAnalyzeManager } } + protected void handleLineCommentSpan( + @NonNull IncrementalToken token, @NonNull List spans, int offset) { + var commentType = SchemeAndroidIDE.COMMENT; + + // highlight special line comments + var commentText = token.getText(); + if (commentText.length() > 2) { + commentText = commentText.substring(2); + commentText = commentText.trim(); + if ("todo".equalsIgnoreCase(commentText.substring(0, 4))) { + commentType = TODO_COMMENT; + } else if ("fixme".equalsIgnoreCase(commentText.substring(0, 5))) { + commentType = FIXME_COMMENT; + } + } + spans.add(Span.obtain(offset, withoutCompletion(commentType))); + } + @Override public LineState getInitialState() { return new LineState(); diff --git a/app/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt b/app/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt index 05e86eb01..f2f3eeb77 100644 --- a/app/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt +++ b/app/src/main/java/com/itsaky/androidide/language/java/JavaAnalyzer.kt @@ -41,8 +41,7 @@ import io.github.rosemoe.sora.text.Content import org.antlr.v4.runtime.CharStreams /** @author Akash Yadav */ -class JavaAnalyzer : - BaseIncrementalAnalyzeManager(JavaLexer(CharStreams.fromString(""))) { +class JavaAnalyzer : BaseIncrementalAnalyzeManager(JavaLexer(CharStreams.fromString(""))) { private val log = ILogger.newInstance(javaClass.simpleName) @@ -175,36 +174,7 @@ class JavaAnalyzer : JavaLexer.LONG, JavaLexer.SHORT, -> spans.add(Span.obtain(offset, makeStyle(TYPE_NAME))) JavaLexer.BLOCK_COMMENT -> spans.add(Span.obtain(offset, forComment())) - JavaLexer.LINE_COMMENT -> { - var commentType = COMMENT - - // highlight special line comments - var commentText = token.text - if (commentText.length > 2) { - commentText = commentText.substring(2) - commentText = commentText.trim { it <= ' ' } - var mark = true - if ("todo".equals(commentText.substring(0, 4), ignoreCase = true)) { - commentType = TODO_COMMENT - } else if ("fixme".equals(commentText.substring(0, 5), ignoreCase = true)) { - commentType = FIXME_COMMENT - } else { - mark = false - } - if (mark) { -// val diagnostic = -// DiagnosticItem( -// severity = WARNING, -// message = commentText, -// code = "special.comment", -// range = Range(Position(0, offset), Position(0, offset + tokenLength)), -// source = commentText -// ) -// ideDiagnostics.add(diagnostic) - } - } - spans.add(Span.obtain(offset, withoutCompletion(commentType))) - } + JavaLexer.LINE_COMMENT -> handleLineCommentSpan(token, spans, offset) JavaLexer.AT -> spans.add(Span.obtain(offset, makeStyle(ANNOTATION))) JavaLexer.IDENTIFIER -> { var colorId = TEXT_NORMAL @@ -220,7 +190,7 @@ class JavaAnalyzer : return spans } - + override fun getMultilineTokenStartEndTypes(): Array { val start = intArrayOf(JavaLexer.DIV, JavaLexer.MUL) val end = intArrayOf(JavaLexer.MUL, JavaLexer.DIV)