Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
1b50291
fix(deps): update dependency org.robolectric:robolectric to v4.16.1
renovate[bot] Jan 21, 2026
cbbe95f
Merge pull request #794 from Rosemoe/renovate/org.robolectric-robolec…
Rosemoe Jan 28, 2026
6f67c6f
Update DefaultCompletionLayout.java
nullij Feb 3, 2026
0535af5
Merge pull request #800 from nullij/patch-1
Rosemoe Feb 4, 2026
b3a8b17
refact(editor): expose `variableResolver` for custom variable resolve…
Rosemoe Feb 6, 2026
533c6dc
chore(editor): refer to inlay hint type names in inlay hint renderers
Rosemoe Feb 6, 2026
0eff59f
fix(editor): add max text length for accessibility node info
Rosemoe Feb 8, 2026
27a6cc4
build(app): migrate signing config to environment variables
Rosemoe Feb 8, 2026
d0e0916
build(app): move signing config vars to job-level env
Rosemoe Feb 8, 2026
9f20f82
docs(textmate): update README.md for TextMate
Rosemoe Feb 8, 2026
efbacac
fix(editor): `SymbolInputView` always overrides the background define…
Rosemoe Feb 8, 2026
099b8be
refact(app): migrate to Material 3
Rosemoe Feb 8, 2026
56e7166
fix(editor): non-null param is declared nullable in `SpanExternalRend…
Rosemoe Feb 9, 2026
77c8ab7
fix(editor): text style in line info panel can be affected by content…
Rosemoe Feb 9, 2026
795f2f0
fix(app): inconsistent inlay hint position in demo
Rosemoe Feb 9, 2026
1bf3548
docs: update screenshots in project README
Rosemoe Feb 9, 2026
b6f8384
fix: fix `ConcurrentModificationException` and expose language server…
KonerDev Feb 10, 2026
db7d487
feat: improve LSP server lifecycle and error handling
KonerDev Feb 11, 2026
7cfa568
chore(deps): update plugin publish to v0.36.0
renovate[bot] Feb 12, 2026
89799c0
chore(deps): update gradle/actions action to v5
renovate[bot] Feb 12, 2026
16c99d0
chore(deps): update agp to v9.0.1
renovate[bot] Feb 13, 2026
87fa0f3
fix(editor-lsp): improve editor lifecycle
KonerDev Feb 18, 2026
76b9f73
refactor(editor-lsp): move exception handling to separate method
KonerDev Feb 19, 2026
700c744
fix: stopping server does no longer disconnect all servers
KonerDev Feb 19, 2026
c5b7349
fix(deps): update dependency org.jruby.jcodings:jcodings to v1.0.64
renovate[bot] Feb 20, 2026
f361f25
Merge pull request #804 from KonerDev/fix/concurrent-exception
Rosemoe Feb 20, 2026
f4111ff
Merge pull request #807 from Rosemoe/renovate/org.jruby.jcodings-jcod…
Rosemoe Feb 20, 2026
2093386
fix: fix unnecessary stop of language server wrapper by tracking conn…
KonerDev Feb 20, 2026
46a9bd5
Merge pull request #808 from KonerDev/fix/unnecessary-stop
Rosemoe Feb 21, 2026
99624d5
feat: add disable-feature option to server definition (Closes #802)
KonerDev Feb 21, 2026
084af3c
fix: fix hover window not showing (Closes #796)
KonerDev Feb 21, 2026
004e85b
fix(deps): update dependency org.jruby.joni:joni to v2.2.7
renovate[bot] Feb 25, 2026
fe24675
Merge pull request #809 from KonerDev/feat/disable-ls-features
Rosemoe Feb 25, 2026
42a4175
Merge pull request #810 from Rosemoe/renovate/org.jruby.joni-joni-2.x
Rosemoe Feb 25, 2026
9242793
Merge pull request #805 from Rosemoe/renovate/agp
Rosemoe Feb 25, 2026
07b035a
fix: possible null reference in `EditorRenderer#applySelectedTextRange`
Rosemoe Feb 25, 2026
cd9a784
Merge remote-tracking branch 'origin/main'
Rosemoe Feb 25, 2026
813bac9
Merge pull request #791 from Rosemoe/renovate/com.vanniktech.maven.pu…
Rosemoe Feb 25, 2026
f55af1c
feat(deps): update Kotlin to v2.3.10
Rosemoe Feb 25, 2026
f07397e
fix(deps): update dependency org.eclipse.lsp4j:org.eclipse.lsp4j to v1
renovate[bot] Feb 27, 2026
09bec91
fix(editor): fix `IndexOutOfBoundsException` on completion
KonerDev Feb 28, 2026
30c1ddc
Merge pull request #812 from KonerDev/fix/oob-completion
Rosemoe Mar 1, 2026
be49c69
fix(editor): leading whitespace is sometimes wrongly hidden
Rosemoe Mar 3, 2026
5d49f36
refact(editor): store text in byte array instead of char array to cut…
Rosemoe Mar 3, 2026
59717e6
Merge remote-tracking branch 'origin/main'
Rosemoe Mar 3, 2026
ca60f69
test(editor): add test for `ContentLine`
Rosemoe Mar 3, 2026
10370f8
perf(editor): avoid copying when create `String` in Latin1 implementa…
Rosemoe Mar 3, 2026
36306af
feat(editor): add experimental shallow copying in `AsyncIncrementalAn…
Rosemoe Mar 3, 2026
d9e5ba5
fix(editor): missing support for multiline code block with more than …
Rosemoe Mar 3, 2026
6f97f74
feat(app): add sample for paged editing for long files
Rosemoe Mar 4, 2026
c28ca33
Merge pull request #753 from Rosemoe/renovate/gradle-actions-5.x
Rosemoe Mar 5, 2026
7ccb3f6
docs: fix license badge
Rosemoe Mar 5, 2026
4216bd9
Merge remote-tracking branch 'origin/main'
Rosemoe Mar 5, 2026
22c6a82
fix(lsp): app crash when `textDocument/inlayHint` or `textDocument/do…
Rosemoe Mar 5, 2026
fdb0a2a
feat(lsp): partially support API changes in LSP4J v1.0 (LSP v3.18.0)
Rosemoe Mar 5, 2026
acdc2fd
fix(ci): `branches-ignore` field for renovate is wrong
Rosemoe Mar 5, 2026
2d06427
chore(deps): update actions/upload-artifact action to v7
renovate[bot] Mar 5, 2026
439456f
Merge pull request #803 from Rosemoe/renovate/major-lsp4j
Rosemoe Mar 5, 2026
aa3b884
Merge pull request #811 from Rosemoe/renovate/major-github-artifact-a…
Rosemoe Mar 5, 2026
aed3a44
chore: merge upstream changes
KonerDev Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Android CI
on:
push:
branches-ignore:
- 'renovate-*'
- 'renovate/*'
paths-ignore:
- '**.md'
- '**.txt'
Expand Down Expand Up @@ -40,7 +40,7 @@ jobs:
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
uses: gradle/actions/setup-gradle@v5

- name: Grant Permissions for Gradle
run: chmod +x gradlew
Expand All @@ -60,7 +60,7 @@ jobs:
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.MVN_SIGNING_KEY_PASSWORD }}

- name: Upload artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
if: ${{ !github.head_ref }}
with:
name: apk-debug
Expand Down
4 changes: 2 additions & 2 deletions README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

![Banner](/images/editor_banner.jpg)
----
[![CI](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml)
[![GitHub license](https://img.shields.io/github/license/Rosemoe/CodeEditor)](https://github.com/Rosemoe/CodeEditor/blob/main/LICENSE)
[![CI](https://github.com/Rosemoe/sora-editor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Rosemoe/sora-editor/actions/workflows/gradle.yml)
![GitHub License](https://img.shields.io/github/license/Rosemoe/sora-editor?link=https%3A%2F%2Fgithub.com%2FRosemoe%2Fsora-editor%2Fblob%2Fmain%2FLICENSE&link=https%3A%2F%2Fgithub.com%2FRosemoe%2Fsora-editor%2Fblob%2Fmain%2FLICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.rosemoe/editor.svg?label=Maven%20Central)]((https://search.maven.org/search?q=io.github.rosemoe%20editor))
[![Telegram](https://img.shields.io/badge/Join-Telegram-blue)](https://t.me/rosemoe_code_editor)
[![QQ](https://img.shields.io/badge/Join-QQ_Group-ff69b4)](https://jq.qq.com/?_wv=1027&k=n68uxQws)
Expand Down
4 changes: 2 additions & 2 deletions README.jp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

![Banner](/images/editor_banner.jpg)
----
[![CI](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml)
[![GitHub license](https://img.shields.io/github/license/Rosemoe/CodeEditor)](https://github.com/Rosemoe/CodeEditor/blob/main/LICENSE)
[![CI](https://github.com/Rosemoe/sora-editor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Rosemoe/sora-editor/actions/workflows/gradle.yml)
![GitHub License](https://img.shields.io/github/license/Rosemoe/sora-editor?link=https%3A%2F%2Fgithub.com%2FRosemoe%2Fsora-editor%2Fblob%2Fmain%2FLICENSE&link=https%3A%2F%2Fgithub.com%2FRosemoe%2Fsora-editor%2Fblob%2Fmain%2FLICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.rosemoe/editor.svg?label=Maven%20Central)]((https://search.maven.org/search?q=io.github.rosemoe%20editor))
[![Telegram](https://img.shields.io/badge/Join-Telegram-blue)](https://t.me/rosemoe_code_editor)
[![QQ](https://img.shields.io/badge/Join-QQ_Group-ff69b4)](https://jq.qq.com/?_wv=1027&k=n68uxQws)
Expand Down
4 changes: 2 additions & 2 deletions README.zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

![Banner](/images/editor_banner.jpg)
----
[![CI](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Rosemoe/CodeEditor/actions/workflows/gradle.yml)
[![GitHub license](https://img.shields.io/github/license/Rosemoe/CodeEditor)](https://github.com/Rosemoe/CodeEditor/blob/main/LICENSE)
[![CI](https://github.com/Rosemoe/sora-editor/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/Rosemoe/sora-editor/actions/workflows/gradle.yml)
![GitHub License](https://img.shields.io/github/license/Rosemoe/sora-editor?link=https%3A%2F%2Fgithub.com%2FRosemoe%2Fsora-editor%2Fblob%2Fmain%2FLICENSE&link=https%3A%2F%2Fgithub.com%2FRosemoe%2Fsora-editor%2Fblob%2Fmain%2FLICENSE)
[![Maven Central](https://img.shields.io/maven-central/v/io.github.rosemoe/editor.svg?label=Maven%20Central)]((https://search.maven.org/search?q=io.github.rosemoe%20editor))
[![Telegram](https://img.shields.io/badge/Join-Telegram-blue)](https://t.me/rosemoe_code_editor)
[![QQ](https://img.shields.io/badge/Join-QQ_Group-ff69b4)](https://jq.qq.com/?_wv=1027&k=n68uxQws)
Expand Down
1 change: 1 addition & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ dependencies {

debugImplementation(libs.leakcanary)
testImplementation(libs.junit)
testImplementation(libs.tests.google.truth)
androidTestImplementation(libs.androidx.test.junit)
androidTestImplementation(libs.androidx.test.espresso)
}
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@
android:shell="true"
tools:targetApi="q" />

<activity
android:name=".tests.paged.PagedEditActivity"
android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation"
android:exported="false"
android:windowSoftInputMode="adjustResize" />
<activity
android:name=".tests.TestActivity"
android:configChanges="orientation|keyboardHidden|screenSize|keyboard|navigation"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,67 +0,0 @@
/*
* sora-editor - the awesome code editor for Android
* https://github.com/Rosemoe/sora-editor
* Copyright (C) 2020-2025 Rosemoe
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
* Please contact Rosemoe by email 2073412493@qq.com if you need
* additional information or have any questions
*/
package io.github.rosemoe.sora.app;

import android.os.Bundle;
import android.view.MenuItem;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import io.github.rosemoe.sora.app.databinding.ActivityEditorBinding;
import io.github.rosemoe.sora.widget.CodeEditor;

public class BaseEditorActivity extends AppCompatActivity {

protected ActivityEditorBinding binding;

protected CodeEditor editor;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityEditorBinding.inflate(getLayoutInflater());
editor = binding.editor;

setContentView(binding.getRoot());
setSupportActionBar(binding.activityToolbar);
UtilsKt.applyEdgeToEdge(this, binding.toolbarContainer, binding.getRoot());

var supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
}
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}

}
57 changes: 57 additions & 0 deletions app/src/main/java/io/github/rosemoe/sora/app/BaseEditorActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* sora-editor - the awesome code editor for Android
* https://github.com/Rosemoe/sora-editor
* Copyright (C) 2020-2025 Rosemoe
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*
* Please contact Rosemoe by email 2073412493@qq.com if you need
* additional information or have any questions
*/
package io.github.rosemoe.sora.app

import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import io.github.rosemoe.sora.app.databinding.ActivityEditorBinding
import io.github.rosemoe.sora.widget.CodeEditor

open class BaseEditorActivity : AppCompatActivity() {
protected lateinit var binding: ActivityEditorBinding

protected lateinit var editor: CodeEditor

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityEditorBinding.inflate(layoutInflater)
editor = binding.editor

setContentView(binding.root)
setSupportActionBar(binding.activityToolbar)
applyEdgeToEdge(this, binding.toolbarContainer, binding.root)

supportActionBar?.setDisplayHomeAsUpEnabled(true)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
finish()
return true
}
return super.onOptionsItemSelected(item)
}

}
5 changes: 4 additions & 1 deletion app/src/main/java/io/github/rosemoe/sora/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
package io.github.rosemoe.sora.app

import android.content.DialogInterface
import android.content.res.Configuration
import android.graphics.Typeface
import android.net.Uri
import android.os.Build
Expand Down Expand Up @@ -53,6 +52,7 @@ import io.github.rosemoe.sora.app.databinding.ActivityMainBinding
import io.github.rosemoe.sora.app.lsp.LspTestActivity
import io.github.rosemoe.sora.app.lsp.LspTestJavaActivity
import io.github.rosemoe.sora.app.tests.TestActivity
import io.github.rosemoe.sora.app.tests.paged.PagedEditActivity
import io.github.rosemoe.sora.event.ContentChangeEvent
import io.github.rosemoe.sora.event.EditorKeyEvent
import io.github.rosemoe.sora.event.InlayHintClickEvent
Expand All @@ -66,6 +66,7 @@ import io.github.rosemoe.sora.graphics.inlayHint.TextInlayHintRenderer
import io.github.rosemoe.sora.lang.EmptyLanguage
import io.github.rosemoe.sora.lang.JavaLanguageSpec
import io.github.rosemoe.sora.lang.TsLanguageJava
import io.github.rosemoe.sora.lang.analysis.AsyncIncrementalAnalyzeManager
import io.github.rosemoe.sora.lang.diagnostic.DiagnosticRegion
import io.github.rosemoe.sora.lang.diagnostic.DiagnosticsContainer
import io.github.rosemoe.sora.lang.styling.color.ConstColor
Expand Down Expand Up @@ -128,6 +129,7 @@ class MainActivity : AppCompatActivity() {
// Load tree-sitter libraries
System.loadLibrary("android-tree-sitter")
System.loadLibrary("tree-sitter-java")
AsyncIncrementalAnalyzeManager.setUseShallowCopyByDefault(true)
}

private const val TAG = "MainActivity"
Expand Down Expand Up @@ -683,6 +685,7 @@ class MainActivity : AppCompatActivity() {
val editor = binding.editor
when (id) {
R.id.open_test_activity -> startActivity<TestActivity>()
R.id.open_paged_edit -> startActivity<PagedEditActivity>()
R.id.open_lsp_activity -> {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
MaterialAlertDialogBuilder(this)
Expand Down
Loading
Loading