How rosemoe/sora-editor works
sora-editor is an Android code-editor library. In its primary workflow, a user edits a document; editor text state supports undo/redo and incremental language analysis, which produces styles for display. The library also provides completion, snippets, diagnostics, formatting, bracket matching, and editor events. An optional LSP module adds language-server integration and editor-facing language features. The graph reflects README capabilities and the supplied source excerpts; several feature connections are omitted where their wiring was not sampled.
Main entry points: Styles.java Styles and highlights · Content.kt Text content · AsyncIncrementalAnalyzeManager.java Incremental analysis · LspEditor.kt LSP editor
Components 19
Editing Core
- Text content
editor/src/main/java/io/github/rosemoe/sora/text/Content.kt - Undo manager
editor/src/main/java/io/github/rosemoe/sora/text/UndoManager.java - Event system
editor/src/main/java/io/github/rosemoe/sora/event/EventManager.java - Snippet editing
editor/src/main/java/io/github/rosemoe/sora/widget/snippet/SnippetController.kt
Language Services
- Incremental analysis
editor/src/main/java/io/github/rosemoe/sora/lang/analysis/AsyncIncrementalAnalyzeManager.java - Java analysis
language-java/src/main/java/io/github/rosemoe/sora/langs/java/JavaIncrementalAnalyzeManager.java - Tree-sitter analysis
language-treesitter/src/main/java/io/github/rosemoe/sora/editor/ts/TsAnalyzeManager.kt - Completion and snippets
editor/src/main/java/io/github/rosemoe/sora/lang/completion/CompletionItem.java - Diagnostics
editor/src/main/java/io/github/rosemoe/sora/lang/diagnostic/DiagnosticsContainer.java - Formatting
editor/src/main/java/io/github/rosemoe/sora/lang/format/Formatter.java
Editor Presentation
- Styles and highlights
editor/src/main/java/io/github/rosemoe/sora/lang/styling/Styles.java - Text rendering
editor/src/main/java/io/github/rosemoe/sora/graphics/TextRow.java - Bracket matching
editor/src/main/java/io/github/rosemoe/sora/lang/brackets/OnlineBracketsMatcher.java
LSP Integration
- LSP editor
editor-lsp/src/main/java/io/github/rosemoe/sora/lsp/editor/LspEditor.kt - LSP requests
editor-lsp/src/main/java/io/github/rosemoe/sora/lsp/client/languageserver/requestmanager/DefaultRequestManager.kt - Server connections
editor-lsp/src/main/java/io/github/rosemoe/sora/lsp/client/connection/StreamConnectionProvider.kt - LSP editor features
editor-lsp/src/main/java/io/github/rosemoe/sora/lsp/editor/completion/CompletionItemProvider.kt
Other components
- Editor user
- Language server
Connections 12
- Editor user → Text content: edits text
- Text content → Undo manager: records changes
- Incremental analysis → Styles and highlights: publishes styles
- Java analysis → Incremental analysis: extends analysis
- Tree-sitter analysis → Styles and highlights: sets styles
- Styles and highlights → Text rendering: provides spans
- Editor user → Event system: triggers events
- Editor user → Snippet editing: edits placeholders
- LSP editor → LSP requests: requests features
- LSP requests → Language server: forwards requests
- Server connections → Language server: connects streams
- LSP editor features → LSP editor: presents results