From b1b1ae616b32c6f555609e844e123516bd4f3170 Mon Sep 17 00:00:00 2001 From: buddygr Date: Sat, 7 May 2022 19:13:26 +0800 Subject: [PATCH] =?UTF-8?q?QPython=E6=96=87=E6=9C=AC=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8=EF=BC=9A=20=20=20=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8D=A2=E8=A1=8C=E6=97=A0=E6=95=88=E7=9A=84bug=20=20=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=B3=E9=94=AE=E5=AD=97=EF=BC=8C=E4=B8=BA?= =?UTF-8?q?py3.10=E5=81=9A=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../texteditor/ui/view/AdvancedEditText.java | 48 +++++++++++-------- .../org/qpython/qpy/utils/CodePattern.java | 3 +- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/qpython/src/main/java/org/qpython/qpy/texteditor/ui/view/AdvancedEditText.java b/qpython/src/main/java/org/qpython/qpy/texteditor/ui/view/AdvancedEditText.java index 80e2a88..0300f37 100644 --- a/qpython/src/main/java/org/qpython/qpy/texteditor/ui/view/AdvancedEditText.java +++ b/qpython/src/main/java/org/qpython/qpy/texteditor/ui/view/AdvancedEditText.java @@ -11,6 +11,7 @@ import android.os.Handler; import android.text.Editable; import android.text.InputFilter; import android.text.InputType; +import android.text.Layout; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; @@ -170,6 +171,7 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex */ @Override public void onDraw(Canvas canvas) { + //乘着船:修复了自动换行行号显示错误的bug int count, padding, lineX, baseline; // padding @@ -195,6 +197,13 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex lineX = (int) (mDrawingRect.left + padding - (Settings.TEXT_SIZE * mScale * 0.5)); + int k = 1; + Layout layout = getLayout(); + String text = ""; + if (Settings.WORDWRAP && Settings.SHOW_LINE_NUMBERS) { + text = String.valueOf(getText()); + } + for (int i = 0; i < count; i++) { baseline = getLineBounds(i, mLineBounds); if ((mMaxSize != null) && (mMaxSize.x < mLineBounds.right)) { @@ -203,18 +212,27 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex if ((mLineBounds.bottom < mDrawingRect.top) || (mLineBounds.top > mDrawingRect.bottom)) { + if (Settings.SHOW_LINE_NUMBERS && Settings.WORDWRAP && !text.substring(layout.getLineStart(i),layout.getLineEnd(i)).endsWith("\n")) + k--; continue; } - if ((i == mHighlightedLine) && (!Settings.WORDWRAP)) { + if(Settings.WORDWRAP) { + if (i == mHighlightedLine - k + 1) { + canvas.drawRect(mLineBounds, mPaintHighlight); + } + } + else if (i == mHighlightedLine) { canvas.drawRect(mLineBounds, mPaintHighlight); } if (Settings.SHOW_LINE_NUMBERS) { - canvas.drawText("" + (i + 1), mDrawingRect.left + mPadding, - baseline, mPaintNumbers); - } - if (Settings.SHOW_LINE_NUMBERS) { + canvas.drawText(String.valueOf(i+k), mDrawingRect.left + mPadding, + baseline, mPaintNumbers); + if(Settings.WORDWRAP && !text.substring(layout.getLineStart(i),layout.getLineEnd(i)).endsWith("\n")) + k--; + //} + //if (Settings.SHOW_LINE_NUMBERS) { canvas.drawLine(lineX, mDrawingRect.top, lineX, mDrawingRect.bottom, mPaintNumbers); } @@ -395,18 +413,9 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex } - if (true - /* - (this.fileType.equals("py") || this.fileType.equals("lua")) && - this.getLineCount() < Settings.MAX_LINES_NUM_WITH_SYNTAX*/) { - isWatch = true; - init(); - refresh(); - } else { - isWatch = false; - cancelUpdate(); - unHightlight(); - } + isWatch = true; + init(); + refresh(); //} } @@ -424,7 +433,7 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex selStart = getSelectionStart(); if (mHighlightStart != selStart) { - text = getText().toString(); + text = String.valueOf(getText()); line = i = 0; while (i < selStart) { @@ -506,7 +515,7 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex } private void init() { - setHorizontallyScrolling(true); + setHorizontallyScrolling(!Settings.WORDWRAP);//乘着船:修复了不能自动换行的bug setFilters(new InputFilter[]{ (source, start, end, dest, dstart, dend) -> { @@ -598,7 +607,6 @@ public class AdvancedEditText extends android.support.v7.widget.AppCompatEditTex for (int n = errorLine; n-- > 0 && m.find(); ) - ; e.setSpan( new BackgroundColorSpan(COLOR_ERROR), diff --git a/qpython/src/main/java/org/qpython/qpy/utils/CodePattern.java b/qpython/src/main/java/org/qpython/qpy/utils/CodePattern.java index 78d274c..4b8c8c8 100644 --- a/qpython/src/main/java/org/qpython/qpy/utils/CodePattern.java +++ b/qpython/src/main/java/org/qpython/qpy/utils/CodePattern.java @@ -35,7 +35,8 @@ public class CodePattern { "for|while|" + "if|elif|else|" + "and|in|is|not|or|" + - "import|from|as)\\b"); + "import|from|as|" + + "match|case|nonlocal)\\b"); public static final Pattern PATTERN_LUA_KEYWORD = Pattern.compile( "\\b(and|break|do|" + "else|elseif|end|" + -- Gitee