Rosemoe/sora-editor (io.github.Rosemoe.sora-editor:editor)
Compare Source
Enhancements
- improve character deleting on Android P and above
- disable desugaring in textmate to let app developer choose whether desugaring is enabled (#641 by @MohammedKHC )
- LSP improvements (#635, #681 by @dingyi222666 )
- add monarch support for editor (#580 by @dingyi222666 )
- add regex back-reference in regex search-replace (#639)
- add default night colors for editor text action window (#644)
- do not stroke matching delimeters (#663 by @massivemadness )
- allow to control current line background overlapping behavior (#679 by @itsaky )
- allow to intercept
SideIconClickEvent (#680 by @itsaky )
- provide motion region and bounds info in
EditorMotionEvent (#682 by @itsaky )
Bugs Fixed
- clipboard content is sometimes pasted like
ClipData.Item {...}
- text position error when tab width is not 4
- mess text display after font change
- fix unexpectedly thrown exception in Java tokenizer that leads to syntax-highlight crash
- conflict between symbol completion and search-replace (#638)
- possible concurrent modification to tree-sitter AST
- negative Y offset leads to crash if overscroll is enabled (#655)
editor.foreground not working for textmate color scheme (#656)
- fix measure size when
wrap_content is used on editor (#658 by @StarkZhidian )
- fix magnifier in sticky text selection mode (#659 by @massivemadness )
- current line is highlighted when it is supposed to be disabled (#662 by @massivemadness )
- rounded selection region not applied for empty line (#667 by @massivemadness )
Compare Source
Fixes and Enhancements
- fix some compatibility issues in textmate and
Language interface
- fix crash in finding word boundary (#618)
- add Ctrl+DEL and Ctrl+Backspace keybindings (#625)
- fix a display issue between character TAB and
:. in some fonts
- add workaround for unsupported regular expressions in textmate grammars
- fix some issues in symbol pairs (#602, #609, #610, #611, #612)
- fix possible crash during
setText (#561, #562)
- fix selection handle can easily set wrong selection position when text size is small (#554)
- fix possible NPE in
SearchThread (#568)
- show scrollbars when mouse inside
- add ripple background for action window buttons
- some memory usage enhancement
Compare Source
Fixes and Enhancements
- add logic for typing dead chars and avoid crashing for some keyboard (#547)
- cancel selection handle animation when mouse is connected
- fix view scrolling not being cancelled after mouse button is released
- fix input sometimes unexpectedly entering inactive mode
- fix inconsistent scroll position after scaling in wordwrap mode
- fix a compatibility issue in textmate after upstream sync (devices under API 34 are affected)
- update dependencies
Documentation Site
Previous pages in sora-editor main repository are removed and unpublished.
Introduction part of sora-editor is available at here, including a brief overview of editor and basic usage/knowledge for getting started.
Compare Source
Fixes
- add static APIs in
Span to SpanFactory to avoid NoSuchMethodError when app minSdk < 24
Migrate to SpanFactory recommended.
Documentation
We are adding documentation for sora-editor now!
Currently, you can visit here to explore the documentation, though it's incomplete.
Compare Source
Fixes and Enhancements
- fix editor cursor animation
- fix wrong keyboard meta states used when printing key is pressed
- fix editor is not focused when soft keyboard is disabled
- add context-click, hover, and context menu events
- add mouse support for editor (#472)
- select text
- drag and drop text in editor
- drag text into editor from other widgets (like TextView)
- diagnostic tooltip on hover
- built-in context menu
- strengthened mouse wheel function
Compare Source
Hello, 2024! Here's the first major update of sora-editor in 2024.
Release Notes for 0.23.0
Fixes and Enhancements
Editor Core
- add more XML attributes
- optionally report cursor anchor position on screen to input method
- fix failure in fetching scroll factor (#532 by @dingyi222666 )
- fix completion window being cut (#420 by @dingyi222666 )
- fix fuzzyScore sort for completion items (#538 by @dingyi222666 )
- fix that text styles are still used after editor is released
- add
PlainTextAnalyzeManager for plain text that requires completion
- fix incorrect rendering order of sticky lines and pinned line numbers (#539 )
- fix stack overflow when cutting line on last editor line
- fix thread-safety issues in
Content
- add extended attributes objects for
Span, and make Span an interface
- add span and span range in editor's motion events (click, double-click and long-click) (#540 )
- add more editor state events for implementing user-side features
- fix diagnostic tooltip is not dismissed on focus lost
- add
EditorSpanInteractionHandler as base implementation for clickable spans
- cut line forward or backward (#508)
- fix scroll position auto-adjust
- add
Ctrl+PgUp, Ctrl+PgDn, Ctrl+Shift+PgUp, Ctrl+Shift+PgDn shortcuts
Language Textmate
- merge TM4E update from upstream
- enable symbol pairs by default
Language LSP
- refactor LSP library by Kotlin (#457 by @dingyi222666 )
- add Java sample for language-lsp usage
Language Tree-sitter
- fix access violation to tree-sitter native objects and thread-safety issues (#497 )
Language Java
Sample App
- open links in code editor by double-click on it
Breaking Changes and Migration
Editor Selection API
The legacy moveSelectionUp, moveSelectionDown and other methods for moving/extending selection are removed.
Now selection moving and extending are seperated.
moveSelection method: de-select any text and move the cursor based on given movement type
extendSelection method: update selected range, based on the movement type passed and anchor for current text selecting
- selection anchor is updated as selection changes and text updates
For selection movement types, please see SelectionMovement enum.
Span API (for custom languages)
Span is now interface class. To migrate to new API, note:
- replace your field access with setters and getters
- do not use builder-like calls to set properties of
Span
- you can not directly get
underlineColor because it is resolved when the span is rendered
Release Notes for 0.23.1
Apply a minor fix to selection anchor updating.
Compare Source
Compare Source
Note: the version is already released on Nov 26, 2023, not now. v0.23.0 will be published recently
Fixes and Enhancements
Editor Core
- pointer icon for mouse input
- single direction fling for better scrolling experience (enabled by default)
- indent selected text on TAB key event (#482 by @itsaky )
- add
StaticColorSpan for dynamicly setting color from the analysis (#485 by @itsaky )
- add null checks for
CodeBlock list during rendering (#498 by @itsaky )
- add switches to enable/disable soft keyboard (#505 by @itsaky )
- update
Numbers class to latest JDK implementation
- dependency updates
TreeSitter
- add API to create custom spans with
TsSpanFactory (#484, #491 by @itsaky )
- fix invalid query on
TSNode in TsBracketPairs
- remove redundant checks in
LineSpansGenerator
- update android-tree-sitter to v4.0.0
Compare Source
Fixes and Enhancements
- add more textmate colors for tooltip (#467 by @PranavPurwar )
- collapse sticky scroll lines automatically when text is selected for better reading (#468)
- memorize cursor position in undo (#471, originally posted in AndroidIDE#1206)
- ability to select text between two points. This avoids dragging on screen for long time. (originally posted in AndroidIDE#1215)
- update tree-sitter version and replace deprecated usages with new ones
- fix
TSTree access violation when fetching bracket pairs
- remove for-removal outdated class
ContentCreator
Compare Source
This is a major update of editor.
Bugs Fixed
editor core
- text action tool window causes some bugs in Gboard (#401 )
- editor string resource ids can be shadowed easily (#406 by @summerain0 )
- clipboard text inserted is wrong when using code snippets (#409 by @itsaky )
- text regions is sometimes wrongly patched by highlighted delimiters
- error on old Android device because of un-desugared classes (#417 by @MuntashirAkon )
- platform API
TypedArray#close called on unsupported devices
- null reference in code block list causes crash (#433 by @itsaky )
- inactive tab stops in code snippets mode are wrongly computed (#438 by @yuruxuan )
- platform deprecated class
MutableInt is used
- scaling is still possible when any selection handle is hold (#452 by @summerain0 )
Styles#finishBuilding call is missing in languages
- selection handle is not taken into account when editor tries to intercept parent from handling motion events (#456 )
language-java
editor-lsp
LspLanguage#getFormatter may return null values
language-textmate
- illegal argument is not recognized but NPE is thrown when loading textmate grammar files
New Features and Enhancements
build and CI
- snapshot builds are automatically published to maven central (#410 by @itsaky )
- update to AGP v8
editor core
- code snippets: nested placeholder support (#409 by @itsaky )
- better selection handle experience with expanded region for touch detection (#358 )
- add sticky scroll for better code reading (#376, experimental)
- specific line number background can be modified by applying
LineGutterBackground (#361 )
- scroll fast when
ALT key is pressed
language-textmate
tree-sitter
docs
About Sticky Scroll Preview
This is the first preview of sticky scroll feature and the feature is disabled by default. Please provide feedbacks if you have any.
Sticky Scroll helps you stay oriented in your code as you scroll, which is also introduced in Visual Studio and Visual Studio Code. Refer to this post of Visual Studio for animated preview of the original feature.
In sora-editor, it's now experimentally supported, including the sticky line display and options like scope-keeping policy and max sticky line count. We also added support for click navigation - jumping to the sticky line when clicked.
Hope this feature help you enjoy a better coding experience.
Preview Image in sora-editor
image
Compare Source
This release includes minor bug fixes and new features.
Bugs Fixed
- renderer may crash when null code block item is added
- index out of bounds when selection is between CR and LF
CharArrayWrapper#subSequence refers to wrong text start
- text wrongly inserted between CRLF
- editor is still listening to text changes after release, causing memory leaks
- occasional index out of bounds when measuring text in
GraphicTextRow
Improvements
EditorReleaseEvent is added, allowing you to do some cleanup on destruction
- add
ContentIO for creating/saving Content texts
- add strikethrough color in scheme
- simplify composing text update as insertion or deletion if possible (#357)
- signature help window for lsp (by @dingyi222666 )
- add
ThemeModel#isDark for lsp (by @dingyi222666 )
Notes
ContentReader should be migrated to ContentIO. ContentReader will be removed in future.
Compare Source
This release includes bug fixes and little improvement as well as minor API changes.
Bugs fixed
- incorrect horizontal scroll range when
renderFunctionCharacter is on
TSQuery is not verified before making access to it
- IME that relies on
InputConnection#getSurroundingText gets invalid position description when maxIPCTextLength is exceeded
- invalid composing text range can be set through
EditorInputConnection#setComposingRegion
- text becomes dirty when using old Gboard to delete characters fast
- animated row background is on wrong layer
- empty text is matched repeatly in regex, leading to OOM
StringIndex OutOfBoundsException in TextMateNewlineHandler (by @dingyi222666 )
CodeEditor#release does not detach EditorColorScheme
- NPE when sending message in
AsyncIncrementalAnalyzeManager
- leaking thread by
TextMateLanguage#updateLanguage
ReplaceAction can be added without its DeleteAction
- nested undo/redo is possible
JavaTextTokenizer does not take down current token (#349)
AsyncIncrementalAnalyzeManager does not update the spans of last line being affected by insertion (#350)
Styles#eraseAllLineStyles raises npe when no line style is there
Improvments
- better search experience, including support for whole word search, speed improvement of regex search, cyclic jumping and better scrolling strategy (#321)
- performance improvement of tree-sitter predicates
- avoid edge effect in
CodeEditor#ensurePositionVisible
- boost the speed of querying search results by binary search
- show built-in text actions window on insert handle release
- add touch slop before magnifier is triggered
- add
I18nConfig for application provided replacement string resources
- add
DirectAccessProps#clipboardTextLengthLimit and add tip when text is unable to be copied due to limit or TransactionTooLargeException
- more exact position of built-in text actions window
- editor uses global default color scheme on startup
- enhanced function of
DirectAccessProps#disallowSuggestions (tested on newest Gboard and Sogou Input for MIUI)
- adapt view parameters for long screenshot in MIUI system
- add two new accessibility actions since Android M
Updated API
- new function
Content#substring
- new event
PublishSearchResultEvent, which is called when search result is available in main thread or searching is stopped
- new
I18nConfig class for replacing string resources
- new function
add CodeEditor#isAntiWordBreaking
- [BREAKING] new API in
EditorColorScheme for global default theme. All newly-created editors use the global default theme. Your modifications to global default theme will reflect in those editors.
- [BREAKING]
CodeEditor#getScroller now has return type EditorScroller. Get the original OverScroller by EditorScroller#getImplScroller
- [BREAKING]
AsyncIncrementalAnalyzeManager and TsAnalyzeManager will receive thread interruption on exit
Compare Source
Bugs Fixed
- member variable highlighting in tree-sitter
- editor crashes in rendering highlighted delimeters when spans are corrupted
EditorDiagnosticTootipWindow can not be got from editor components
EventManager can not be disabled
New Features
CodeEditor#createSubEventManager()
Compare Source
Compare Source
Fixed Bugs
- indent is unexpectedly doubled in keybinding Ctrl+D
- default completion layout can not be clicked after animation unless you scroll the list
- invalid indices are used in editing
TSTree in main thread
IndexOutOfBoundsException when appending text if tree-sitter is used
- unable to run predicates after text editions in tree-sitter
New features
- line info panel style is now a bubble (#283 )
Content.getDocumentVersion() is added for checking document modifications
DiagnosticDetail for describing diagnostics and builtin EditorDiagnosticTooltipWindow (#314 )
- experimental
Quickfix item
- support members scope in tree-sitter (see
LocalsCaptureSpec for more information) and improve speed in finding definitions
- custom text provider for line info panel
LineNumberTipTextProvider
Compare Source
Fixed a critical bug of tree-sitter code blocks in previous release of 0.20.0
Compare Source
Use 0.20.1 instead
Bugs fixed
- memory leaks in
LanguageServerWrapper
EditorSearcher.gotoPrevious() always jumps to the first item when regex is enabled
- transparent line in selection handle drawable (#270 , fixed by @tegajoel #312 )
- whole document becomes black-colored when user is scaling in some languages
SimpleAnalyzeManager ignores line separators
OnigRegExp returns corrupted cache in multi-threaded access (#315 by @xyzxqs )
TextReference.toString() does not return string of backed sequence
- text context region can be unexpectedly bigger the bounds of text (#318 )
- textmate newline handler fixs (#319 by @dingyi222666 )
corePoolSize exceeds maximumPoolSize on 1-core devices (#320 )
New Features
- add support for
wrap_content in view measuring (not recommended, be cautious)
- better interaction with vertical scrollbar
IdentifierAutoComplete now does not add item that is the same as prefix
- reselect text after long press again (optional)
- show ASCII function characters in editor style (optional, enabled by default)
- tree-sitter support, including highlighting, code blocks and brackets for editor, as well as tree-sitter predicate support
Special Thanks
@itsaky for android-tree-sitter
Compare Source
Bugs fixed
- can't add language with scope not "source" (#288 by @dingyi222666 )
- nullable data bundle in ImePrivateCommandEvent is marked nonnull (#293 )
- index out of bounds when rendering in preset composing state (#294 )
- magnifier shows when window size is illegal (#298 )
- partly broken logic of Content#deleteInternal after introducing line separator types (#299 )
- completion window size is not adjusted when size is too small
- layout is not recreated after scaling when wordwrap is enabled and gutter is disabled
- occasional invalid height for completion window
- occasional NPE when searching with regex (AndroidIDE#588)
- unexpected symbol pair matching for '<' '>' in textmate Java
- unexpected symbol pair match when pasting text (AndroidIDE#593)
- selection span can be out of range when shifting cursor in some situations(AndroidIDE#579)
- posted Runnable can be executed out of editor lifecycle (#305 )
- Spans.Reader is not locked during text line rendering, giving chances to hold dirty spanOffset if span content is modified in another thread (#290 )
- editor layout state is not check when layout initialization is finished and is trying to update editor state (#307 )
- View#post does not execute posted actions on startup, causing pending layoutBusy state (#308 )
New features
- updated auto completion ui and sorting method (by @dingyi222666 )
- lua language server in sample app (by @dingyi222666 )
- expose some internal classes of
EditorRenderer for better extension
- very alpha release of
tree-sitter [RIP]
Compare Source
A major update of editor. This release note covers the updates of 0.18.0 and 0.18.1
Improvements
- more built-in key bindings (by @itsaky )
- update lsp4j to 0.17.0
- anti-word-breaking option for wordwrap (for English). enabled by default
- animation for fading scrollbars
- registry feature in textmate, which provides multi-language highlighting in one file (by @dingyi222666 )
- hardwrap marker
- input connection events
BuildEditorInfoEvent and ImePrivateCommandEvent
- symbol pair completion for textmate (by @dingyi222666 )
- updated symbol pair api (by @dingyi222666 )
- add bom module (by @keta1 )
- support indentationRules in textmate (by @dingyi222666 )
Fixed Bugs
- [VITAL] wrong state passed to incremental analysis process when line state-affecting text is inserted
- selection anchor not updated when moving lines (by @itsaky )
- possible crash on low API device #246
- measure cache is not verified before being used
- selection animation is unexpectedly canceled when composing text is present
- selection scale animation causes visual lag when setting new selection position
- emoji character is unexpectedly cut in wordwrap mode
- potential recycled editor in LspEditor#setWrapperLanguage
- IndexOutOfBoundsException generated during rendering with complex text directions
- invalid selection position for RTL text under wordwrap mode
- unable to type after scaling text under wordwrap mode
MatchHelper#startsWith not working correctly
- editor saves redundant undo operation when user is using newest Gboard and some other IMEs
CodeEditor#commitTab ignores language settings
EditorKeyEvent can not be intercepted
Migration
- Due to new API of textmate, some methods are deprecated. They are still compatiable until 0.20.0 or so. See #282 for detailed message
NewlineHandler should get textBefore and textAfter by manually slicing given text with the text position
- refer to new symbol pair interface
Compare Source
Compare Source
Bugs Fixed
- fix unexpected cursor animation when text is not editable
- fix text selecting issue on low API devices (#238 )
- fix unsupported symbol pair is still being used in textmate
- notify the input method when layout is initialized
- fix potential nullptr when
CodeEdditor#updateStyle is called
- fix compatibility issues in textmate (#252 by @MuntashirAkon )
- fix symbol input wrongly adding text to editor when editor is not editable (#253 )
- fix unnrenderer trailing diagnostics when text is short
- fix horizontal scrollbar becoming too short to touch when text includes any single long line (#259 by @summerain0 )
- fix selected text color on high API devices
- fix wrong display of code block lines in textmate when using tabs (#248 )
- fix ContentReference.RefReader ignoring line separator type (#260 )
- fix completion window not getting hidden when user switches between tabstops
- fix conflict of edge effect and reversed scroll on Android 11 and below
- fix
NewlineHandler not triggered when completion window is shown
- fix wrongly inserted line separator in completion window
Improvements
- add
StyleUpdateRange for performance when highlight is updated
- (BREAKING) separate some less frequently used field to
AdvancedSpan from Span
- support
highlightedDelimetersForeground color property in textmate (#247 by @PranavPurwar )
- add optional enchanced functionality of HOME and END
- reorder the dispatch of content edit event and completion request
- add support for custom scrollbar styles (#255 by @MuntashirAkon )
- line info panel position can be changed to other places (#259 by @summerain0 )
- improve connection speed of language server (#262 by @dingyi222666 )
- add
verticalExtraSpaceFactor for extra space size in vertical viewport
Dependency
- remove unused xerces dependency (#243 by @PranavPurwar )
- update kotlin to 1.7.20
- update snakeyaml to 1.33
Compare Source
Bugs Fixed
- fix nullptr when destroying lsp server without completion implementation
- fix trailing FORMAT sting at snippet end causing index out of bounds
- fix a bug in
JavaTextTokenizer that causes the completion stop
Improvements
- editor code snippets now support complex variables and placeholders (with transform or choices) as well as usage of
\u and interpolated shell code
- do not log
CompletionCancelledException in CompletionThread
- add
SnippetEvent for code snippet events
- export more API in
SnippetController
- add
QuickQuoteHandler (separated from SymbolPairMatch)
- add code snippet support in editor-lsp backed by editor snippet (by @dingyi222666 )
- add
StylesUtils#checkNoCompletion
- enhanced
NewlineHandler interface
Compare Source
Fixed bugs
- a potential bug in composing text
- invalid emoji text display when using textmate
- an exception when using lsp (by @dingyi222666 )
- stack overflow in
copyLine() (by @itsaky )
- potential nullptr when user selects completion item
- invalid display of code block lines after text style update
- bug in selecting text when ICU is unavailable (#238 )
- occasional index out of bounds in drawText
New features and Improvements
- Optional bold highlighted delimiters (by @ikws4 )
- Better auto completion in lsp (by @dingyi222666 )
- Upstream update of tm4e (by @dingyi222666 )
- Line number color for current line
- Very basic support of code snippets (simple tabstops, variables and placeholder. choice and rules are unavailable now)
Breaking changes
tm4e upstream code is changed significantly. You are expected to refer to our sample app for migrating old code.
Compare Source
Compare Source
Updates
- Fix potential bug when format thread continues after setText() is called
- Merge composing text edits with composing text submission in undo stack
- Smoother layout update when text size changed after user scaling
- Optional animation in CodeEditor#ensurePositionVisible
- Cut unnecessary memory usage of Paint
- Fix bugs in BlockIntList, which affects horizontal scroll range when wordwrap is disabled
- Support standalone divider margins for left and right
- Update style of default text action window
- Gson dependency update
- Internal field naming updates
Note
Users who rely on using internal fields should check their reflection targets.
Compare Source
Updates
- add shortcut method for setting keywords in textmate auto completer
- do not show identifier if it is duplicated with a keyword in
IdentifierAutoCompleter
- fix bug in rendering text background when wordwrap is enabled
Compare Source
Updates
- fix potential bug in ContentCreator when reading CRLF text
- fix bug in Content#copyText
- fix occasional concurrent modification error when invoking
ContentBidi and CachedIndexer
- performance enhancement in text copying
- some internal code style uniformation
- add some potential combined character clusters
Compare Source
Updates
- Specify line separators for new lines when users edit text in editor
- Fix Content#subSequence bugs in CRLF text
- Fix composing text bug in a specific situations when
trackComposingText is enabled
- Do not highlight delimiters when text is selected
- Remove debug logs
- Performance enhancement in ContentLine#subSequence
Compare Source
Performance Enhancements
This release is mainly focused on performance and display correctness. We optimized the speed of highlighting delimiters and the time cost when text is editted. We also add a new mode called "Basic Display Mode", which provides basic display of text and fast measuring speed. However, some features such as RTL and ligatures are disabled when this is enabled.
New Features
- correct LTR and RTL mixed display
- customizible round text background factor
- side icon for lines and its click event are available now
- mixed CR,LF,CRLF in
Content (Note that CodeEditor#setLineSeparator is not complete yet. editor still uses LF for newlines when you edit text in editor)
Bugs fixed
- fix the width measurement of RTL texts
- fix bugs in
TextRegionIterator
Compare Source
0.15.1
This is a major update of sora-editor
New features
editor-lsp for LSP users, provided by @dingyi222666
- new selection position can be provided by formatters
- code completion in language-textmate (optional)
- specify whether a scheme is dark and some new color ids for completion window (#215)
- specify line background color from language analyzer and these backgrounds are automatically shifted when text is editted
- highlight matching delimiters (including underline, bold and background) (optional)
Improvements
- quicker speed when finding index in text
- use Android 12 introduced new
EdgeEffect
- reusing layout objects and async loading
- editor is still partially interactive when formatting
- draw only visible region of diagnostics
- optimize shifting logic of diagnostics
- optimize the speed of deleting texts in editor, especially when deleting text with a lot of lines
- better display of symbols in wordwrap mode, especially in Chinese and Japanese
- do not recreate layout when text size is not actually changed when the user finishes scaling
- better user experience when editor is not editable
- more switches in
DirectAccessProps
Fixed bugs
- fix potential NPE during destruction of
AsyncIncrementalAnalyzeManager
- fix concurrent issue of
InsertTextHelper (critical)
- fix sometimes wrongly drawn newline markers on high API devices
Notice
From next version of sora-editor, the min SDK version will rise to Android API 24 due to better maintainence.
Compare Source
Compare Source
Bug fix
- Fix unnotified text change for IME when undo/redo (#210 )
- Fix bad scroll range (#212 )
- Bounds check in Content
- Reset batch edit when
Content object is detached
- Reset all styles when text or language changes
Improvements
Indexer and Content share a lock
Content has 8x faster speed when inserting
Content now recoginzes newline correctly: CR, LF, CRLF are all considered '\n'
New Features
- Brackets matching and highlighting in language-java and language-textmate (#194 )
Compare Source
Fix some issues in composing text
Fix incorrect sticky selection
Compare Source
Improvements
- Fix unexpectedly created 512 bytes array when drawing
- Fix text width caching
- Optimize memory usage of language-java, language-textmate
- Optimize speed of analyzing code blocks in language-textmate
- Cache theme colors in textmate
- Track composing text when external text changes occur (#186 #204)
- Add new APIs in
Layout
- Fix some deprecations and better RTL support (@PranavPurwar )
- Add line spacing APIs
- Add option for round text background
Chores
- Update dependencies of textmate & testing instrumentations
Breaking changes
UIThreadIncrementalAnalyzeManager is removed
IdentifierAutoComplete is updated so that it can be used incrementally
IncrementalAnalyzeManager now have integer for line index passed in tokenizeLine
Compare Source
Bug fix
- Fix parent view of Magnifier
- Fix missing
invalidate() call in setFontFeatureSettings()
- Remove unnecessary string resource items
- Adapt Mircosoft Swift Key
- Fix potential invalid state of SHIFT and ALT in
EditorKeyEvent
- Fix invalid error indicator line display (invalid phi for the wavy lines)
- Fix 1 char invisible at line ending sometimes when wordwrap is enabled
New & Improvements
- Custom scale factor in
Magnifier
- Add time limit for merging undo actions (can be modified by
UndoManager#setMergeTimeLimit(long))
- Better magnifier image quality (@massivemadness )
- Better magnifer position when sticky cursor is enabled (@massivemadness )
KeyBindingEvent and some new built-in keybindings (@itsaky )
- Improved cursor animation (
ScaleCursorAnimation)
- Diagnostics APIs
- More diagnostic indicator styles (
DiagnosticIndicatorStyle)
- Approriate default size for diagnostic indicator lines
Breaking changes
Span#problemFlags, MappedSpans#markProblemRegion and MappedSpans.Builder#markProblemRegion are removed. Instead, you are expected to replace them with Diagnostic APIs
- In order to catch up with the updates from tm4e in time, some packages in language-textmate are moved to its original package in tm4e project.
Migration Guide
->Mainly, your work will be miragting your problem marking logic to the new diagnostic API.
Now, the diagnostics are sent by calling StyleReceiver#setDiagnostics(DiagnosticContainer). You are expected to add your DiagnosticRegion objects to the DiagnosticContainer. The container will maintain the positions of those added regions. And also, DiagnosticRegion is described by the start index and end index of the diagnostic item, but not by (line, column) pairs. So you need to compute the index by shadowed Content.
Note that it is not recommended to add new regions to a container that is already being used by editor though the class is thread-safe.
See package io.github.rosemoe.sora.lang.diagnostic.
->package io.github.rosemoe.langs.textmate.core and io.github.rosemoe.langs.textmate.languageconfiguration are moved to org.eclipse.tm4e.core and org.eclipse.tm4e.languageconfiguration
More information
Now editor will show diagnostics with zero length. The editor will show the indicator with a width of the character 'a'.
Note
Maven artifact language-textmate 0.12.0 is broken. Use 0.12.0-1 instead.
Uh oh!
There was an error while loading. Please reload this page.
This PR contains the following updates:
0.11.4→0.23.6Release Notes
Rosemoe/sora-editor (io.github.Rosemoe.sora-editor:editor)
v0.23.6Compare Source
Enhancements
SideIconClickEvent(#680 by @itsaky )EditorMotionEvent(#682 by @itsaky )Bugs Fixed
ClipData.Item {...}editor.foregroundnot working for textmate color scheme (#656)wrap_contentis used on editor (#658 by @StarkZhidian )v0.23.5Compare Source
Fixes and Enhancements
Languageinterface:.in some fontssetText(#561, #562)SearchThread(#568)v0.23.4Compare Source
Fixes and Enhancements
Documentation Site
Previous pages in sora-editor main repository are removed and unpublished.
Introduction part of sora-editor is available at here, including a brief overview of editor and basic usage/knowledge for getting started.
v0.23.3Compare Source
Fixes
SpantoSpanFactoryto avoidNoSuchMethodErrorwhen app minSdk < 24Migrate to
SpanFactoryrecommended.Documentation
We are adding documentation for sora-editor now!
Currently, you can visit here to explore the documentation, though it's incomplete.
v0.23.2Compare Source
Fixes and Enhancements
v0.23.1Compare Source
Hello, 2024! Here's the first major update of sora-editor in 2024.
Release Notes for 0.23.0
Fixes and Enhancements
Editor Core
PlainTextAnalyzeManagerfor plain text that requires completionContentSpan, and makeSpanan interfaceEditorSpanInteractionHandleras base implementation for clickable spansCtrl+PgUp,Ctrl+PgDn,Ctrl+Shift+PgUp,Ctrl+Shift+PgDnshortcutsLanguage Textmate
Language LSP
Language Tree-sitter
Language Java
Sample App
Breaking Changes and Migration
Editor Selection API
The legacy
moveSelectionUp,moveSelectionDownand other methods for moving/extending selection are removed.Now selection moving and extending are seperated.
moveSelectionmethod: de-select any text and move the cursor based on given movement typeextendSelectionmethod: update selected range, based on the movement type passed and anchor for current text selectingFor selection movement types, please see
SelectionMovementenum.Span API (for custom languages)
Spanis now interface class. To migrate to new API, note:SpanunderlineColorbecause it is resolved when the span is renderedRelease Notes for 0.23.1
Apply a minor fix to selection anchor updating.
v0.23.0Compare Source
v0.22.2Compare Source
Note: the version is already released on Nov 26, 2023, not now. v0.23.0 will be published recently
Fixes and Enhancements
Editor Core
StaticColorSpanfor dynamicly setting color from the analysis (#485 by @itsaky )CodeBlocklist during rendering (#498 by @itsaky )Numbersclass to latest JDK implementationTreeSitter
TsSpanFactory(#484, #491 by @itsaky )TSNodeinTsBracketPairsLineSpansGeneratorv0.22.1Compare Source
Fixes and Enhancements
TSTreeaccess violation when fetching bracket pairsContentCreatorv0.22.0Compare Source
This is a major update of editor.
Bugs Fixed
editor core
TypedArray#closecalled on unsupported devicesMutableIntis usedStyles#finishBuildingcall is missing in languageslanguage-java
editor-lsp
LspLanguage#getFormattermay return null valueslanguage-textmate
New Features and Enhancements
build and CI
editor core
LineGutterBackground(#361 )ALTkey is pressedlanguage-textmate
tree-sitter
docs
About Sticky Scroll Preview
This is the first preview of sticky scroll feature and the feature is disabled by default. Please provide feedbacks if you have any.
Sticky Scroll helps you stay oriented in your code as you scroll, which is also introduced in Visual Studio and Visual Studio Code. Refer to this post of Visual Studio for animated preview of the original feature.
In sora-editor, it's now experimentally supported, including the sticky line display and options like
scope-keeping policyandmax sticky line count. We also added support for click navigation - jumping to the sticky line when clicked.Hope this feature help you enjoy a better coding experience.
Preview Image in sora-editor
image
v0.21.1Compare Source
This release includes minor bug fixes and new features.
Bugs Fixed
CharArrayWrapper#subSequencerefers to wrong text startGraphicTextRowImprovements
EditorReleaseEventis added, allowing you to do some cleanup on destructionContentIOfor creating/savingContenttextsThemeModel#isDarkfor lsp (by @dingyi222666 )Notes
ContentReadershould be migrated toContentIO.ContentReaderwill be removed in future.v0.21.0Compare Source
This release includes bug fixes and little improvement as well as minor API changes.
Bugs fixed
renderFunctionCharacteris onTSQueryis not verified before making access to itInputConnection#getSurroundingTextgets invalid position description whenmaxIPCTextLengthis exceededEditorInputConnection#setComposingRegionStringIndex OutOfBoundsExceptioninTextMateNewlineHandler(by @dingyi222666 )CodeEditor#releasedoes not detachEditorColorSchemeAsyncIncrementalAnalyzeManagerTextMateLanguage#updateLanguageReplaceActioncan be added without itsDeleteActionJavaTextTokenizerdoes not take down current token (#349)AsyncIncrementalAnalyzeManagerdoes not update the spans of last line being affected by insertion (#350)Styles#eraseAllLineStylesraises npe when no line style is thereImprovments
CodeEditor#ensurePositionVisibleI18nConfigfor application provided replacement string resourcesDirectAccessProps#clipboardTextLengthLimitand add tip when text is unable to be copied due to limit orTransactionTooLargeExceptionDirectAccessProps#disallowSuggestions(tested on newest Gboard and Sogou Input for MIUI)Updated API
Content#substringPublishSearchResultEvent, which is called when search result is available in main thread or searching is stoppedI18nConfigclass for replacing string resourcesadd CodeEditor#isAntiWordBreakingEditorColorSchemefor global default theme. All newly-created editors use the global default theme. Your modifications to global default theme will reflect in those editors.CodeEditor#getScrollernow has return typeEditorScroller. Get the originalOverScrollerbyEditorScroller#getImplScrollerAsyncIncrementalAnalyzeManagerandTsAnalyzeManagerwill receive thread interruption on exitv0.20.4Compare Source
Bugs Fixed
EditorDiagnosticTootipWindowcan not be got from editor componentsEventManagercan not be disabledNew Features
CodeEditor#createSubEventManager()v0.20.3Compare Source
v0.20.2Compare Source
Fixed Bugs
TSTreein main threadIndexOutOfBoundsExceptionwhen appending text if tree-sitter is usedNew features
Content.getDocumentVersion()is added for checking document modificationsDiagnosticDetailfor describing diagnostics and builtinEditorDiagnosticTooltipWindow(#314 )QuickfixitemLocalsCaptureSpecfor more information) and improve speed in finding definitionsLineNumberTipTextProviderv0.20.1Compare Source
Fixed a critical bug of tree-sitter code blocks in previous release of 0.20.0
v0.20.0Compare Source
Use 0.20.1 instead
Bugs fixed
LanguageServerWrapperEditorSearcher.gotoPrevious()always jumps to the first item when regex is enabledSimpleAnalyzeManagerignores line separatorsOnigRegExpreturns corrupted cache in multi-threaded access (#315 by @xyzxqs )TextReference.toString()does not return string of backed sequencecorePoolSizeexceedsmaximumPoolSizeon 1-core devices (#320 )New Features
wrap_contentin view measuring (not recommended, be cautious)IdentifierAutoCompletenow does not add item that is the same as prefixSpecial Thanks
@itsaky for android-tree-sitter
v0.19.0Compare Source
Bugs fixed
New features
EditorRendererfor better extensiontree-sitter[RIP]v0.18.1Compare Source
A major update of editor. This release note covers the updates of 0.18.0 and 0.18.1
Improvements
BuildEditorInfoEventandImePrivateCommandEventFixed Bugs
MatchHelper#startsWithnot working correctlyCodeEditor#commitTabignores language settingsEditorKeyEventcan not be interceptedMigration
NewlineHandlershould get textBefore and textAfter by manually slicing given text with the text positionv0.18.0Compare Source
v0.17.2Compare Source
Bugs Fixed
CodeEdditor#updateStyleis calledNewlineHandlernot triggered when completion window is shownImprovements
StyleUpdateRangefor performance when highlight is updatedAdvancedSpanfromSpanhighlightedDelimetersForegroundcolor property in textmate (#247 by @PranavPurwar )verticalExtraSpaceFactorfor extra space size in vertical viewportDependency
v0.17.1Compare Source
Bugs Fixed
JavaTextTokenizerthat causes the completion stopImprovements
\uand interpolated shell codeCompletionCancelledExceptioninCompletionThreadSnippetEventfor code snippet eventsSnippetControllerQuickQuoteHandler(separated fromSymbolPairMatch)StylesUtils#checkNoCompletionNewlineHandlerinterfacev0.17.0Compare Source
Fixed bugs
copyLine()(by @itsaky )New features and Improvements
Breaking changes
tm4e upstream code is changed significantly. You are expected to refer to our sample app for migrating old code.
v0.16.5Compare Source
v0.16.4Compare Source
Updates
Note
Users who rely on using internal fields should check their reflection targets.
v0.16.3Compare Source
Updates
IdentifierAutoCompleterv0.16.2Compare Source
Updates
ContentBidiandCachedIndexerv0.16.1Compare Source
Updates
trackComposingTextis enabledv0.16.0Compare Source
Performance Enhancements
This release is mainly focused on performance and display correctness. We optimized the speed of highlighting delimiters and the time cost when text is editted. We also add a new mode called "Basic Display Mode", which provides basic display of text and fast measuring speed. However, some features such as RTL and ligatures are disabled when this is enabled.
New Features
Content(Note that CodeEditor#setLineSeparator is not complete yet. editor still uses LF for newlines when you edit text in editor)Bugs fixed
TextRegionIteratorv0.15.1Compare Source
0.15.1
This is a major update of sora-editor
New features
editor-lspfor LSP users, provided by @dingyi222666Improvements
EdgeEffectDirectAccessPropsFixed bugs
AsyncIncrementalAnalyzeManagerInsertTextHelper(critical)Notice
From next version of sora-editor, the min SDK version will rise to Android API 24 due to better maintainence.
v0.15.0Compare Source
v0.14.0Compare Source
Bug fix
Contentobject is detachedImprovements
IndexerandContentshare a lockContenthas 8x faster speed when insertingContentnow recoginzes newline correctly: CR, LF, CRLF are all considered '\n'New Features
v0.13.1Compare Source
Fix some issues in composing text
Fix incorrect sticky selection
v0.13.0Compare Source
Improvements
LayoutChores
Breaking changes
UIThreadIncrementalAnalyzeManageris removedIdentifierAutoCompleteis updated so that it can be used incrementallyIncrementalAnalyzeManagernow have integer for line index passed intokenizeLinev0.12.0Compare Source
Bug fix
invalidate()call insetFontFeatureSettings()EditorKeyEventNew & Improvements
MagnifierUndoManager#setMergeTimeLimit(long))KeyBindingEventand some new built-in keybindings (@itsaky )ScaleCursorAnimation)DiagnosticIndicatorStyle)Breaking changes
Span#problemFlags,MappedSpans#markProblemRegionandMappedSpans.Builder#markProblemRegionare removed. Instead, you are expected to replace them with Diagnostic APIsMigration Guide
->Mainly, your work will be miragting your problem marking logic to the new diagnostic API.
Now, the diagnostics are sent by calling
StyleReceiver#setDiagnostics(DiagnosticContainer). You are expected to add yourDiagnosticRegionobjects to theDiagnosticContainer. The container will maintain the positions of those added regions. And also,DiagnosticRegionis described by the start index and end index of the diagnostic item, but not by (line, column) pairs. So you need to compute the index by shadowed Content.Note that it is not recommended to add new regions to a container that is already being used by editor though the class is thread-safe.
See package
io.github.rosemoe.sora.lang.diagnostic.->package
io.github.rosemoe.langs.textmate.coreandio.github.rosemoe.langs.textmate.languageconfigurationare moved toorg.eclipse.tm4e.coreandorg.eclipse.tm4e.languageconfigurationMore information
Now editor will show diagnostics with zero length. The editor will show the indicator with a width of the character 'a'.
Note
Maven artifact language-textmate 0.12.0 is broken. Use 0.12.0-1 instead.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.