capacitor-sora-editor 1.2.1 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/DEPENDENCY_SOLUTION.md +87 -87
  2. package/DEVELOPMENT.md +152 -152
  3. package/NO_JITPACK_WARNING.md +14 -14
  4. package/README.md +36 -0
  5. package/WORDWRAP_FLICKER_FIX.md +268 -205
  6. package/android/sora-editor/editor/src/main/AndroidManifest.xml +1 -1
  7. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/I18nConfig.kt +42 -0
  8. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/Experimental.kt +16 -0
  9. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/InvalidateRequired.kt +10 -0
  10. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/UnsupportedUserUsage.kt +14 -0
  11. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ClickEvent.kt +22 -0
  12. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ColorSchemeUpdateEvent.kt +1 -1
  13. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ContentChangeEvent.kt +41 -0
  14. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/DoubleClickEvent.kt +23 -0
  15. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorKeyEvent.kt +103 -0
  16. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorMotionEvent.kt +111 -0
  17. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Event.kt +69 -0
  18. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EventManager.kt +267 -0
  19. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EventReceiver.kt +5 -0
  20. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/HandleStateChangeEvent.kt +21 -0
  21. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/InterceptTarget.kt +18 -0
  22. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/KeyBindingEvent.kt +34 -0
  23. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/LongPressEvent.kt +25 -0
  24. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ResultedEvent.kt +21 -0
  25. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ScrollEvent.kt +48 -0
  26. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SelectionChangeEvent.kt +81 -0
  27. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SideIconClickEvent.kt +1 -1
  28. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SnippetEvent.kt +41 -0
  29. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SubscriptionReceipt.kt +35 -0
  30. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Unsubscribe.kt +28 -0
  31. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Utils.kt +1 -1
  32. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/editorMinorEvents.kt +1 -1
  33. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BubbleHelper.kt +59 -0
  34. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BufferedDrawPoints.kt +37 -0
  35. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphemeBoundsBreaker.kt +31 -0
  36. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicCharacter.kt +28 -0
  37. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicsCompat.kt +48 -0
  38. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/Paint.kt +191 -0
  39. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/RectUtils.kt +16 -0
  40. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/SingleCharacterWidths.kt +156 -0
  41. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/TextRow.kt +1465 -0
  42. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/TextRowParams.kt +1 -1
  43. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/ColorInlayHintRenderer.kt +1 -1
  44. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/InlayHintRenderer.kt +2 -2
  45. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/InlayHintRendererProvider.kt +1 -1
  46. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/inlayHint/TextInlayHintRenderer.kt +2 -2
  47. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/EmptyLanguage.kt +94 -0
  48. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/Language.kt +188 -0
  49. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/QuickQuoteHandler.kt +46 -0
  50. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AnalyzeManager.kt +67 -0
  51. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AsyncIncrementalAnalyzeManager.kt +504 -0
  52. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/IncrementalAnalyzeManager.kt +93 -0
  53. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/SequenceUpdateRange.kt +1 -1
  54. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/SimpleAnalyzeManager.kt +194 -0
  55. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/StyleReceiver.kt +63 -0
  56. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/StyleUpdateRange.kt +1 -1
  57. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/BracketsProvider.kt +21 -0
  58. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/OnlineBracketsMatcher.kt +83 -0
  59. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/PairedBracket.kt +13 -0
  60. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/SimpleBracketsCollector.kt +53 -0
  61. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionCancelledException.kt +14 -0
  62. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionHelper.kt +48 -0
  63. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionItem.kt +131 -0
  64. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionItemKind.kt +1 -1
  65. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionPublisher.kt +250 -0
  66. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/IdentifierAutoComplete.kt +352 -0
  67. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/MatchHelper.kt +126 -0
  68. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleCompletionIconDrawer.kt +1 -1
  69. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleCompletionItem.kt +77 -0
  70. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleSnippetCompletionItem.kt +35 -0
  71. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SnippetDescription.kt +1 -1
  72. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/comparators.kt +1 -1
  73. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/filters.kt +3 -3
  74. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/CodeSnippet.kt +171 -0
  75. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/ConditionalFormat.kt +8 -0
  76. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/FormatString.kt +3 -0
  77. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/InterpolatedShellItem.kt +13 -0
  78. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NextUpperCaseFormat.kt +3 -0
  79. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NoFormat.kt +3 -0
  80. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceHolderElement.kt +1 -1
  81. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceholderDefinition.kt +2 -2
  82. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceholderItem.kt +22 -0
  83. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlainPlaceholderElement.kt +1 -1
  84. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlainTextItem.kt +17 -0
  85. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/SnippetItem.kt +33 -0
  86. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/Transform.kt +15 -0
  87. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/VariableItem.kt +15 -0
  88. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetParser.kt +544 -0
  89. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetTokenizer.kt +108 -0
  90. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/Token.kt +7 -0
  91. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/TokenType.kt +20 -0
  92. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticDetail.kt +1 -1
  93. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticRegion.kt +56 -0
  94. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticsContainer.kt +109 -0
  95. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/Quickfix.kt +1 -1
  96. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/folding/FoldingRegion.kt +50 -0
  97. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/AsyncFormatter.kt +182 -0
  98. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/Formatter.kt +72 -0
  99. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandleResult.kt +18 -0
  100. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandler.kt +32 -0
  101. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/BlocksUpdater.kt +34 -0
  102. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/CodeBlock.kt +165 -0
  103. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/EmptyReader.kt +30 -0
  104. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/HighlightTextContainer.kt +1 -1
  105. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpanUpdater.kt +180 -0
  106. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpans.kt +210 -0
  107. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Span.kt +139 -0
  108. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/SpanFactory.kt +41 -0
  109. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/SpanPool.kt +1 -1
  110. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Spans.kt +104 -0
  111. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Styles.kt +219 -0
  112. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/StylesUtils.kt +82 -0
  113. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/TextStyle.kt +130 -31
  114. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/color/ConstColor.kt +1 -1
  115. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/color/EditorColor.kt +1 -1
  116. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/color/ResolvableColor.kt +1 -1
  117. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/InlayHint.kt +1 -1
  118. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/InlayHintsContainer.kt +1 -1
  119. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/IntSetUpdateRange.kt +1 -1
  120. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/SparseUpdateRange.kt +1 -1
  121. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/inlayHint/inlayHints.kt +1 -1
  122. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineAnchorStyle.kt +2 -2
  123. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineBackground.kt +2 -2
  124. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineGutterBackground.kt +1 -1
  125. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineSideIcon.kt +1 -1
  126. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/line/LineStyles.kt +1 -1
  127. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/patching/SparseStylePatches.kt +2 -2
  128. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/patching/StylePatch.kt +1 -1
  129. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanClickableUrl.kt +1 -1
  130. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanColorResolver.kt +1 -1
  131. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanConstColorResolver.kt +1 -1
  132. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExt.kt +1 -1
  133. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExtAttrs.kt +39 -0
  134. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExternalRenderer.kt +1 -1
  135. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanInteractionInfo.kt +1 -1
  136. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/NoExtSpanImpl.kt +89 -0
  137. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/SpanImpl.kt +103 -0
  138. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/util/PointAnchorContainer.kt +1 -1
  139. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/BaseAnalyzeManager.kt +44 -0
  140. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextAnalyzeManager.kt +30 -0
  141. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextSpans.kt +42 -0
  142. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/{AndroidEmoji.java → AndroidEmoji.kt} +29 -27
  143. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CachedIndexer.kt +408 -0
  144. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharArrayWrapper.kt +40 -0
  145. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharPosition.kt +97 -0
  146. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharSequenceIterator.kt +66 -0
  147. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ComposingText.kt +72 -0
  148. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Content.kt +889 -33
  149. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/{widget/component/EditorBuiltinComponent.java → text/ContentExtensions.kt} +14 -24
  150. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentIO.kt +149 -0
  151. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentLine.kt +252 -0
  152. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentListener.kt +67 -0
  153. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentReference.kt +177 -0
  154. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Cursor.kt +316 -0
  155. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/FunctionCharacters.kt +46 -0
  156. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ICUUtils.kt +58 -0
  157. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Indexer.kt +63 -0
  158. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/InsertTextHelper.kt +95 -0
  159. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/LineSeparator.kt +51 -0
  160. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/SpanRecycler.kt +71 -0
  161. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextLayoutHelper.kt +105 -0
  162. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextRange.kt +48 -0
  163. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextReference.kt +91 -0
  164. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtils.kt +181 -0
  165. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtilsP.kt +232 -0
  166. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UndoManager.kt +569 -0
  167. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UnicodeIterator.kt +69 -0
  168. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/BidiRequirementChecker.kt +5 -0
  169. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/ContentBidi.kt +104 -0
  170. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/Directions.kt +43 -0
  171. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/IDirections.kt +9 -0
  172. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/TextBidi.kt +67 -0
  173. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/VisualDirections.kt +45 -0
  174. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreaker.kt +19 -0
  175. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerEmpty.kt +13 -0
  176. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerIcu.kt +36 -0
  177. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerProgram.kt +23 -0
  178. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/method/KeyMetaStates.kt +55 -0
  179. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BinaryHeap.kt +216 -0
  180. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BlockIntList.kt +314 -0
  181. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/CharCode.kt +1 -1
  182. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Chars.kt +1 -1
  183. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ClipDataUtils.kt +29 -0
  184. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/EditorHandler.kt +1 -1
  185. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Floats.kt +10 -0
  186. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/IntPair.kt +76 -0
  187. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/KeyboardUtils.kt +1 -1
  188. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Logger.kt +78 -0
  189. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/LongArrayList.kt +104 -0
  190. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MutableInt.kt +14 -0
  191. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MutableIntList.kt +35 -0
  192. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MutableLongLongMap.kt +36 -0
  193. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MyCharacter.kt +127 -0
  194. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Numbers.kt +109 -0
  195. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ObjectPool.kt +44 -0
  196. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/RegionIterator.kt +123 -0
  197. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/RendererUtils.kt +1 -1
  198. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ReversedListView.kt +1 -1
  199. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/SegmentList.kt +273 -0
  200. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ShareableData.kt +1 -1
  201. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryCharBuffer.kt +31 -0
  202. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryFloatBuffer.kt +44 -0
  203. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ThemeUtils.kt +14 -0
  204. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TrieTree.kt +137 -0
  205. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ViewUtils.kt +39 -0
  206. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefGrammar.kt +11 -0
  207. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefHelper.kt +27 -0
  208. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefParser.kt +89 -0
  209. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefToken.kt +16 -0
  210. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CodeEditor.kt +5509 -0
  211. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CursorBlink.kt +78 -0
  212. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/DirectAccessProps.kt +604 -0
  213. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/Editor.kt +1 -1
  214. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorInputConnection.kt +708 -0
  215. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorKeyEventHandler.kt +678 -0
  216. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorRenderer.kt +3542 -0
  217. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorScroller.kt +89 -0
  218. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorSearcher.kt +531 -0
  219. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorStyleDelegate.kt +109 -0
  220. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorTouchEventHandler.kt +1349 -0
  221. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/LanguageHelper.kt +38 -0
  222. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/RegionResolver.kt +1 -1
  223. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SelectionMovement.kt +27 -37
  224. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolInputView.kt +103 -0
  225. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolPairMatch.kt +261 -0
  226. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/base/EditorPopupWindow.kt +244 -0
  227. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/CompletionLayout.kt +59 -0
  228. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionItemAdapter.kt +60 -0
  229. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionLayout.kt +225 -0
  230. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorAutoCompletion.kt +300 -0
  231. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorBuiltinComponent.kt +15 -0
  232. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorCompletionAdapter.kt +87 -0
  233. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorContextMenuCreator.kt +6 -28
  234. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorDiagnosticTooltipWindow.kt +27 -20
  235. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorTextActionWindow.kt +358 -0
  236. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/Magnifier.kt +354 -0
  237. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/ext/EditorSpanInteractionHandler.kt +3 -3
  238. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/AbstractLayout.kt +126 -0
  239. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/{Layout.java → Layout.kt} +30 -63
  240. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/LineBreakLayout.kt +370 -0
  241. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/Row.kt +57 -0
  242. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElement.kt +52 -0
  243. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElementTypes.kt +18 -0
  244. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowIterator.kt +38 -0
  245. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/ViewMeasureHelper.kt +135 -0
  246. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/WordwrapLayout.kt +703 -0
  247. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/MeasureCacheItem.kt +1 -1
  248. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderCache.kt +1 -1
  249. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderContext.kt +1 -1
  250. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderNodeHolder.kt +3 -25
  251. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderingConstants.kt +53 -0
  252. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/TextAdvancesCache.kt +89 -0
  253. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/EditorColorScheme.kt +393 -0
  254. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeDarcula.kt +40 -0
  255. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeEclipse.kt +34 -0
  256. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeGitHub.kt +28 -0
  257. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeNotepadXX.kt +34 -0
  258. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeVS2019.kt +40 -0
  259. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/SnippetController.kt +4 -3
  260. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/TransformApplier.kt +103 -0
  261. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ClipboardBasedSnippetVariableResolver.kt +21 -0
  262. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CommentBasedSnippetVariableResolver.kt +23 -0
  263. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CompositeSnippetVariableResolver.kt +35 -0
  264. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/EditorBasedSnippetVariableResolver.kt +36 -0
  265. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/FileBasedSnippetVariableResolver.kt +11 -0
  266. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ISnippetVariableResolver.kt +21 -0
  267. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/RandomBasedSnippetVariableResolver.kt +22 -0
  268. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/TimeBasedSnippetVariableResolver.kt +58 -0
  269. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/WorkspaceBasedSnippetVariableResolver.kt +11 -0
  270. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/CursorAnimator.kt +54 -0
  271. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/DiagnosticIndicatorStyle.kt +13 -0
  272. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPosition.kt +9 -0
  273. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPositionMode.kt +6 -0
  274. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineNumberTipTextProvider.kt +1 -1
  275. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/SelectionHandleStyle.kt +82 -0
  276. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/DefaultLineNumberTip.kt +1 -1
  277. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/FadeCursorAnimator.kt +143 -0
  278. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleDrop.kt +66 -0
  279. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleNone.kt +30 -0
  280. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleSideDrop.kt +62 -0
  281. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/MoveCursorAnimator.kt +127 -0
  282. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/ScaleCursorAnimator.kt +134 -0
  283. package/android/sora-editor/editor/src/main/res/anim/anim_diagnostic_tooltip_window_enter.xml +1 -1
  284. package/android/sora-editor/editor/src/main/res/anim/anim_diagnostic_tooltip_window_exit.xml +1 -1
  285. package/android/sora-editor/editor/src/main/res/anim/anim_text_action_popup_enter.xml +1 -1
  286. package/android/sora-editor/editor/src/main/res/anim/anim_text_action_popup_exit.xml +1 -1
  287. package/android/sora-editor/editor/src/main/res/drawable/baseline_more_vert_24.xml +1 -1
  288. package/android/sora-editor/editor/src/main/res/drawable/editor_text_select_start.xml +1 -1
  289. package/android/sora-editor/editor/src/main/res/drawable/ic_more_vert_black_20dp.xml +1 -1
  290. package/android/sora-editor/editor/src/main/res/drawable/ic_sora_handle_drop.xml +1 -1
  291. package/android/sora-editor/editor/src/main/res/drawable/line_break.xml +1 -1
  292. package/android/sora-editor/editor/src/main/res/drawable/magnifier_background.xml +1 -1
  293. package/android/sora-editor/editor/src/main/res/drawable/round_content_copy_20.xml +1 -1
  294. package/android/sora-editor/editor/src/main/res/drawable/round_content_cut_20.xml +1 -1
  295. package/android/sora-editor/editor/src/main/res/drawable/round_content_paste_20.xml +1 -1
  296. package/android/sora-editor/editor/src/main/res/drawable/round_save_20.xml +1 -1
  297. package/android/sora-editor/editor/src/main/res/drawable/round_select_all_20.xml +1 -1
  298. package/android/sora-editor/editor/src/main/res/drawable/softwrap_left.xml +1 -1
  299. package/android/sora-editor/editor/src/main/res/drawable/softwrap_right.xml +1 -1
  300. package/android/sora-editor/editor/src/main/res/layout/default_completion_result_item.xml +1 -1
  301. package/android/sora-editor/editor/src/main/res/layout/diagnostic_tooltip_window.xml +1 -1
  302. package/android/sora-editor/editor/src/main/res/layout/magnifier_popup.xml +1 -1
  303. package/android/sora-editor/editor/src/main/res/layout/text_compose_panel.xml +2 -1
  304. package/android/sora-editor/editor/src/main/res/values/attrs.xml +1 -1
  305. package/android/sora-editor/editor/src/main/res/values/colors.xml +1 -1
  306. package/android/sora-editor/editor/src/main/res/values/dimens.xml +1 -1
  307. package/android/sora-editor/editor/src/main/res/values/strings.xml +1 -1
  308. package/android/sora-editor/editor/src/main/res/values/style.xml +1 -1
  309. package/android/sora-editor/editor/src/main/res/values-night/colors.xml +1 -1
  310. package/android/sora-editor/editor/src/main/res/values-zh/strings.xml +1 -1
  311. package/android/sora-editor/language-textmate/src/main/AndroidManifest.xml +1 -1
  312. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/MyState.kt +11 -0
  313. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateAnalyzer.kt +269 -0
  314. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateColorScheme.kt +298 -0
  315. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateLanguage.kt +219 -0
  316. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateNewlineHandler.kt +268 -0
  317. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateSymbolPairMatch.kt +167 -0
  318. package/android/sora-editor/{editor/src/main/java/io/github/abc15018045126/sora/event/EventReceiver.java → language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingHelper.kt} +7 -6
  319. package/android/sora-editor/{editor/src/main/java/io/github/abc15018045126/sora/util/MutableInt.java → language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegion.kt} +12 -14
  320. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegions.kt +93 -0
  321. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/IndentRange.kt +156 -0
  322. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/PreviousRegion.kt +7 -0
  323. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/RangesCollector.kt +25 -0
  324. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/FileProviderRegistry.kt +53 -0
  325. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/GrammarRegistry.kt +222 -0
  326. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/ThemeRegistry.kt +121 -0
  327. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/dsl/GrammarDefinitionDSL.kt +1 -1
  328. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/DefaultGrammarDefinition.kt +68 -0
  329. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/GrammarDefinition.kt +12 -0
  330. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/ThemeModel.kt +50 -0
  331. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/provider/AssetsFileResolver.java +1 -23
  332. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/provider/FileResolver.java +1 -23
  333. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/reader/LanguageDefinitionReader.java +1 -23
  334. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/ColorUtils.kt +57 -0
  335. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/MatcherUtils.kt +29 -0
  336. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/StringUtils.kt +46 -0
  337. package/android/sora-editor/oniguruma-native/src/main/java/io/github/abc15018045126/oniguruma/OnigNative.kt +95 -0
  338. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/SoraEditorPlugin.kt +342 -337
  339. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ComposeEditorActivity.kt +63 -63
  340. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/EditorViewModel.kt +141 -5
  341. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/EditorColorSettings.kt +190 -0
  342. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/EditorScreen.kt +390 -234
  343. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/SoraEditorWrapper.kt +104 -104
  344. package/android/src/main/java/com/abc15018045126/capacitor/soraeditor/compose/ui/theme/Theme.kt +38 -38
  345. package/package.json +1 -1
  346. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/I18nConfig.java +0 -69
  347. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/Experimental.java +0 -41
  348. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/InvalidateRequired.java +0 -40
  349. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/annotations/UnsupportedUserUsage.java +0 -39
  350. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ClickEvent.java +0 -49
  351. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ContentChangeEvent.java +0 -122
  352. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/DoubleClickEvent.java +0 -50
  353. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorKeyEvent.java +0 -157
  354. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EditorMotionEvent.java +0 -212
  355. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Event.java +0 -132
  356. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/EventManager.java +0 -328
  357. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/HandleStateChangeEvent.java +0 -67
  358. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/InterceptTarget.java +0 -44
  359. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/KeyBindingEvent.java +0 -77
  360. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/LongPressEvent.java +0 -53
  361. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ResultedEvent.java +0 -63
  362. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/ScrollEvent.java +0 -126
  363. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SelectionChangeEvent.java +0 -155
  364. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SnippetEvent.java +0 -92
  365. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/SubscriptionReceipt.java +0 -67
  366. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/event/Unsubscribe.java +0 -60
  367. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BubbleHelper.java +0 -76
  368. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/BufferedDrawPoints.java +0 -66
  369. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphemeBoundsBreaker.java +0 -55
  370. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicCharacter.java +0 -52
  371. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/GraphicsCompat.java +0 -55
  372. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/Paint.java +0 -159
  373. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/RectUtils.java +0 -39
  374. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/SingleCharacterWidths.java +0 -160
  375. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/graphics/TextRow.java +0 -1402
  376. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/EmptyLanguage.java +0 -159
  377. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/Language.java +0 -215
  378. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/QuickQuoteHandler.java +0 -78
  379. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AnalyzeManager.java +0 -97
  380. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/AsyncIncrementalAnalyzeManager.java +0 -604
  381. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/IncrementalAnalyzeManager.java +0 -120
  382. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/SimpleAnalyzeManager.java +0 -238
  383. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/analysis/StyleReceiver.java +0 -90
  384. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/BracketsProvider.java +0 -49
  385. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/OnlineBracketsMatcher.java +0 -112
  386. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/PairedBracket.java +0 -57
  387. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/brackets/SimpleBracketsCollector.java +0 -83
  388. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionCancelledException.java +0 -44
  389. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionHelper.java +0 -72
  390. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionItem.java +0 -163
  391. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/CompletionPublisher.java +0 -284
  392. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/IdentifierAutoComplete.java +0 -359
  393. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/MatchHelper.java +0 -131
  394. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleCompletionItem.java +0 -112
  395. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/SimpleSnippetCompletionItem.java +0 -71
  396. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/CodeSnippet.java +0 -223
  397. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/ConditionalFormat.java +0 -68
  398. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/FormatString.java +0 -30
  399. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/InterpolatedShellItem.java +0 -55
  400. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NextUpperCaseFormat.java +0 -28
  401. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/NoFormat.java +0 -43
  402. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlaceholderItem.java +0 -58
  403. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/PlainTextItem.java +0 -56
  404. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/SnippetItem.java +0 -70
  405. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/Transform.java +0 -54
  406. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/VariableItem.java +0 -81
  407. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetParser.java +0 -571
  408. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/CodeSnippetTokenizer.java +0 -131
  409. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/Token.java +0 -47
  410. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/completion/snippet/parser/TokenType.java +0 -59
  411. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticRegion.java +0 -95
  412. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/diagnostic/DiagnosticsContainer.java +0 -148
  413. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/folding/FoldingRegion.java +0 -89
  414. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/AsyncFormatter.java +0 -198
  415. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/format/Formatter.java +0 -104
  416. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandleResult.java +0 -47
  417. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/smartEnter/NewlineHandler.java +0 -60
  418. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/BlocksUpdater.java +0 -60
  419. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/CodeBlock.java +0 -182
  420. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/EmptyReader.java +0 -66
  421. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpanUpdater.java +0 -190
  422. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/MappedSpans.java +0 -264
  423. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Span.java +0 -203
  424. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/SpanFactory.java +0 -73
  425. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Spans.java +0 -133
  426. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/Styles.java +0 -280
  427. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/StylesUtils.java +0 -108
  428. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/TextStyle.java +0 -141
  429. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/SpanExtAttrs.java +0 -67
  430. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/NoExtSpanImpl.java +0 -165
  431. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/styling/span/internal/SpanImpl.java +0 -188
  432. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/BaseAnalyzeManager.java +0 -95
  433. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextAnalyzeManager.java +0 -65
  434. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/lang/util/PlainTextSpans.java +0 -78
  435. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CachedIndexer.java +0 -458
  436. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharArrayWrapper.java +0 -81
  437. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharPosition.java +0 -150
  438. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/CharSequenceIterator.java +0 -109
  439. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ComposingText.java +0 -91
  440. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Content.java +0 -1306
  441. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentIO.java +0 -173
  442. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentLine.java +0 -405
  443. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentListener.java +0 -81
  444. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ContentReference.java +0 -212
  445. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Cursor.java +0 -374
  446. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/FunctionCharacters.java +0 -71
  447. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/ICUUtils.java +0 -85
  448. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/Indexer.java +0 -92
  449. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/InsertTextHelper.java +0 -117
  450. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/LineSeparator.java +0 -123
  451. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/SpanRecycler.java +0 -103
  452. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextLayoutHelper.java +0 -122
  453. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextRange.java +0 -85
  454. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextReference.java +0 -132
  455. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtils.java +0 -196
  456. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/TextUtilsP.java +0 -236
  457. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UndoManager.java +0 -750
  458. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/UnicodeIterator.java +0 -106
  459. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/BidiRequirementChecker.java +0 -31
  460. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/ContentBidi.java +0 -143
  461. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/Directions.java +0 -79
  462. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/IDirections.java +0 -39
  463. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/TextBidi.java +0 -93
  464. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/bidi/VisualDirections.java +0 -88
  465. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreaker.java +0 -47
  466. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerEmpty.java +0 -38
  467. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerIcu.java +0 -62
  468. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/breaker/WordBreakerProgram.java +0 -54
  469. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/text/method/KeyMetaStates.java +0 -93
  470. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BinaryHeap.java +0 -239
  471. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/BlockIntList.java +0 -366
  472. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ClipDataUtils.java +0 -55
  473. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Floats.java +0 -33
  474. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/IntPair.java +0 -96
  475. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Logger.java +0 -109
  476. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/LongArrayList.java +0 -132
  477. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/MyCharacter.java +0 -143
  478. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/Numbers.java +0 -123
  479. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ObjectPool.java +0 -77
  480. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/RegionIterator.java +0 -162
  481. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/SegmentList.java +0 -323
  482. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryCharBuffer.java +0 -52
  483. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TemporaryFloatBuffer.java +0 -68
  484. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ThemeUtils.java +0 -38
  485. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/TrieTree.java +0 -177
  486. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/ViewUtils.java +0 -67
  487. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefGrammar.java +0 -40
  488. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefHelper.java +0 -53
  489. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefParser.java +0 -119
  490. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/util/regex/RegexBackrefToken.java +0 -65
  491. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CodeEditor.java +0 -5433
  492. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/CursorBlink.java +0 -98
  493. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/DirectAccessProps.java +0 -561
  494. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorInputConnection.java +0 -714
  495. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorKeyEventHandler.java +0 -646
  496. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorRenderer.java +0 -2620
  497. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorScroller.java +0 -119
  498. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorSearcher.java +0 -553
  499. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorStyleDelegate.java +0 -143
  500. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/EditorTouchEventHandler.java +0 -1306
  501. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/LanguageHelper.java +0 -66
  502. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolInputView.java +0 -154
  503. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/SymbolPairMatch.java +0 -334
  504. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/base/EditorPopupWindow.java +0 -351
  505. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/CompletionLayout.java +0 -89
  506. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionItemAdapter.java +0 -76
  507. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/DefaultCompletionLayout.java +0 -206
  508. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorAutoCompletion.java +0 -684
  509. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorCompletionAdapter.java +0 -118
  510. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/EditorTextActionWindow.java +0 -362
  511. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/component/Magnifier.java +0 -396
  512. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/AbstractLayout.java +0 -158
  513. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/LineBreakLayout.java +0 -393
  514. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/Row.java +0 -77
  515. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElement.java +0 -70
  516. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowElementTypes.java +0 -41
  517. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/RowIterator.java +0 -67
  518. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/ViewMeasureHelper.java +0 -123
  519. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/layout/WordwrapLayout.java +0 -683
  520. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/RenderingConstants.java +0 -79
  521. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/TextAdvancesCache.java +0 -122
  522. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/rendering/package-info.java +0 -30
  523. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/EditorColorScheme.java +0 -544
  524. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeDarcula.java +0 -70
  525. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeEclipse.java +0 -60
  526. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeGitHub.java +0 -54
  527. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeNotepadXX.java +0 -60
  528. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/schemes/SchemeVS2019.java +0 -70
  529. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/TransformApplier.java +0 -134
  530. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ClipboardBasedSnippetVariableResolver.java +0 -61
  531. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CommentBasedSnippetVariableResolver.java +0 -77
  532. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/CompositeSnippetVariableResolver.java +0 -79
  533. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/EditorBasedSnippetVariableResolver.java +0 -76
  534. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/FileBasedSnippetVariableResolver.java +0 -39
  535. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/ISnippetVariableResolver.java +0 -49
  536. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/RandomBasedSnippetVariableResolver.java +0 -55
  537. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/TimeBasedSnippetVariableResolver.java +0 -101
  538. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/snippet/variable/WorkspaceBasedSnippetVariableResolver.java +0 -39
  539. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/CursorAnimator.java +0 -78
  540. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/DiagnosticIndicatorStyle.java +0 -37
  541. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPosition.java +0 -33
  542. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/LineInfoPanelPositionMode.java +0 -30
  543. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/SelectionHandleStyle.java +0 -98
  544. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/FadeCursorAnimator.java +0 -179
  545. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleDrop.java +0 -80
  546. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleNone.java +0 -28
  547. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/HandleStyleSideDrop.java +0 -60
  548. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/MoveCursorAnimator.java +0 -159
  549. package/android/sora-editor/editor/src/main/java/io/github/abc15018045126/sora/widget/style/builtin/ScaleCursorAnimator.java +0 -166
  550. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/MyState.java +0 -46
  551. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateAnalyzer.java +0 -301
  552. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateColorScheme.java +0 -369
  553. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateLanguage.java +0 -314
  554. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateNewlineHandler.java +0 -547
  555. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/TextMateSymbolPairMatch.java +0 -240
  556. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingHelper.java +0 -35
  557. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegion.java +0 -51
  558. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/FoldingRegions.java +0 -96
  559. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/IndentRange.java +0 -169
  560. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/PreviousRegion.java +0 -41
  561. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/folding/RangesCollector.java +0 -71
  562. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/FileProviderRegistry.java +0 -83
  563. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/GrammarRegistry.java +0 -321
  564. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/ThemeRegistry.java +0 -186
  565. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/DefaultGrammarDefinition.java +0 -121
  566. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/GrammarDefinition.java +0 -51
  567. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/registry/model/ThemeModel.java +0 -106
  568. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/ColorUtils.java +0 -79
  569. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/MatcherUtils.java +0 -54
  570. package/android/sora-editor/language-textmate/src/main/java/io/github/abc15018045126/sora/langs/textmate/utils/StringUtils.java +0 -64
  571. package/android/sora-editor/oniguruma-native/src/main/java/io/github/abc15018045126/oniguruma/OnigNative.java +0 -121
@@ -1,1306 +0,0 @@
1
- /*
2
- * sora-editor - the awesome code editor for Android
3
- * https://github.com/abc15018045126/sora-editor
4
- * Copyright (C) 2020-2024 abc15018045126
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19
- * USA
20
- *
21
- * Please contact abc15018045126 by email 2073412493@qq.com if you need
22
- * additional information or have any questions
23
- */
24
- package io.github.abc15018045126.sora.text;
25
-
26
- import androidx.annotation.NonNull;
27
- import androidx.annotation.Nullable;
28
-
29
- import java.util.ArrayList;
30
- import java.util.LinkedList;
31
- import java.util.List;
32
- import java.util.Objects;
33
- import java.util.concurrent.atomic.AtomicLong;
34
- import java.util.concurrent.locks.ReadWriteLock;
35
- import java.util.concurrent.locks.ReentrantReadWriteLock;
36
-
37
- import io.github.abc15018045126.sora.text.bidi.ContentBidi;
38
- import io.github.abc15018045126.sora.text.bidi.Directions;
39
-
40
- /**
41
- * This class saves the text content for editor and maintains line widths.
42
- * It is thread-safe by default. Use {@link #Content(CharSequence, boolean)} constructor to
43
- * create a non thread-safe one.
44
- *
45
- * @author abc15018045126
46
- */
47
- public class Content implements CharSequence {
48
-
49
- public final static int DEFAULT_MAX_UNDO_STACK_SIZE = 500;
50
- public final static int DEFAULT_LIST_CAPACITY = 1000;
51
-
52
- public final static int CHECK_TYPE_READ = 0;
53
- public final static int CHECK_TYPE_CURSOR = 1;
54
- public final static int CHECK_TYPE_INDEX = 2;
55
-
56
- private static int sInitialListCapacity;
57
-
58
- static {
59
- setInitialLineCapacity(DEFAULT_LIST_CAPACITY);
60
- }
61
-
62
- private final List<ContentLine> lines;
63
- private final List<ContentListener> contentListeners;
64
- private final ReadWriteLock lock;
65
- private int textLength;
66
- private int nestedBatchEdit;
67
- private final AtomicLong documentVersion = new AtomicLong(1L);
68
- private final Indexer indexer;
69
- private final ContentBidi bidi;
70
- private UndoManager undoManager;
71
- private Cursor cursor;
72
-
73
- /**
74
- * This constructor will create a Content object with no text
75
- */
76
- public Content() {
77
- this(null);
78
- }
79
-
80
- /**
81
- * This constructor will create a Content object with the given source.
82
- * If you give us null,it will just create an empty Content object
83
- *
84
- * @param src The source of Content
85
- */
86
- public Content(CharSequence src) {
87
- this(src, true);
88
- }
89
-
90
- /**
91
- * Create a Content object with the given content text. Specify whether thread-safe access
92
- * to single instance is enabled.
93
- */
94
- public Content(CharSequence src, boolean threadSafe) {
95
- if (src == null) {
96
- src = "";
97
- }
98
- if (threadSafe) {
99
- lock = new ReentrantReadWriteLock();
100
- } else {
101
- lock = null;
102
- }
103
- textLength = 0;
104
- nestedBatchEdit = 0;
105
- lines = new ArrayList<>(getInitialLineCapacity());
106
- lines.add(new ContentLine());
107
- contentListeners = new ArrayList<>();
108
- bidi = new ContentBidi(this);
109
- undoManager = new UndoManager();
110
- setMaxUndoStackSize(Content.DEFAULT_MAX_UNDO_STACK_SIZE);
111
- indexer = new CachedIndexer(this);
112
- if (src.length() == 0) {
113
- setUndoEnabled(true);
114
- return;
115
- }
116
- setUndoEnabled(false);
117
- insert(0, 0, src);
118
- setUndoEnabled(true);
119
- }
120
-
121
- /**
122
- * Returns the default capacity of text line list
123
- *
124
- * @return Default capacity
125
- */
126
- public static int getInitialLineCapacity() {
127
- return Content.sInitialListCapacity;
128
- }
129
-
130
- /**
131
- * Set the default capacity of text line list
132
- *
133
- * @param capacity Default capacity
134
- */
135
- public static void setInitialLineCapacity(int capacity) {
136
- if (capacity <= 0) {
137
- throw new IllegalArgumentException("capacity can not be negative or zero");
138
- }
139
- sInitialListCapacity = capacity;
140
- }
141
-
142
- /**
143
- * Test whether the two ContentLine have the same text
144
- *
145
- * @param a ContentLine
146
- * @param b another ContentLine
147
- * @return Whether the text in the given two lines equal
148
- */
149
- private static boolean textEquals(@NonNull ContentLine a, @NonNull ContentLine b) {
150
- if (a.length() != b.length()) {
151
- return false;
152
- }
153
- if (a == b) {
154
- return true;
155
- }
156
- for (int i = 0; i < a.length(); i++) {
157
- if (a.charAt(i) != b.charAt(i)) {
158
- return false;
159
- }
160
- }
161
- return true;
162
- }
163
-
164
- public boolean isThreadSafe() {
165
- return lock != null;
166
- }
167
-
168
- protected void lock(boolean write) {
169
- if (lock == null) {
170
- return;
171
- }
172
- (write ? lock.writeLock() : lock.readLock()).lock();
173
- }
174
-
175
- protected void unlock(boolean write) {
176
- if (lock == null) {
177
- return;
178
- }
179
- (write ? lock.writeLock() : lock.readLock()).unlock();
180
- }
181
-
182
- @Override
183
- public char charAt(int index) {
184
- checkIndex(index, CHECK_TYPE_READ);
185
- lock(false);
186
- try {
187
- var p = getIndexer().getCharPosition(index);
188
- return lines.get(p.line).charAt(p.column);
189
- } finally {
190
- unlock(false);
191
- }
192
- }
193
-
194
- /**
195
- * Get the character at the given position
196
- *
197
- * @param line The line position of character
198
- * @param column The column position of character
199
- * @return The character at the given position
200
- */
201
- public char charAt(int line, int column) {
202
- lock(false);
203
- try {
204
- checkLineAndColumn(line, column, CHECK_TYPE_READ);
205
- return lines.get(line).charAt(column);
206
- } finally {
207
- unlock(false);
208
- }
209
- }
210
-
211
- @Override
212
- public int length() {
213
- return textLength;
214
- }
215
-
216
- @NonNull
217
- @Override
218
- public CharSequence subSequence(int start, int end) {
219
- if (start > end) {
220
- throw new StringIndexOutOfBoundsException("start > end");
221
- }
222
- lock(false);
223
- try {
224
- var s = getIndexer().getCharPosition(start);
225
- var e = getIndexer().getCharPosition(end);
226
- return subContentInternal(s.getLine(), s.getColumn(), e.getLine(), e.getColumn(), true);
227
- } finally {
228
- unlock(false);
229
- }
230
- }
231
-
232
- public String substring(int start, int end) {
233
- if (start > end) {
234
- throw new StringIndexOutOfBoundsException("start > end");
235
- }
236
- lock(false);
237
- try {
238
- var s = getIndexer().getCharPosition(start);
239
- var e = getIndexer().getCharPosition(end);
240
- return subStringBuilder(s.getLine(), s.getColumn(), e.getLine(), e.getColumn(), end - start + 1).toString();
241
- } finally {
242
- unlock(false);
243
- }
244
- }
245
-
246
- /**
247
- * Get raw data of line.
248
- * The result should not be modified by code out of editor framework.
249
- *
250
- * @param line Line
251
- * @return Raw ContentLine used by Content
252
- */
253
- public ContentLine getLine(int line) {
254
- lock(false);
255
- try {
256
- return lines.get(line);
257
- } finally {
258
- unlock(false);
259
- }
260
- }
261
-
262
- ContentLine getLineUnsafe(int line) {
263
- return lines.get(line);
264
- }
265
-
266
- /**
267
- * Get how many lines there are
268
- *
269
- * @return Line count
270
- */
271
- public int getLineCount() {
272
- return lines.size();
273
- }
274
-
275
- /**
276
- * Get how many characters is on the given line
277
- * If (line < 0 or line >= getLineCount()),it will throw a IndexOutOfBoundsException
278
- *
279
- * @param line The line to get
280
- * @return Character count on line
281
- */
282
- public int getColumnCount(int line) {
283
- return getLine(line).length();
284
- }
285
-
286
- /**
287
- * Get the given line text without '\n' character
288
- *
289
- * @param line The line to get
290
- * @return New String object of this line
291
- */
292
- public String getLineString(int line) {
293
- lock(false);
294
- try {
295
- checkLine(line);
296
- return lines.get(line).toString();
297
- } finally {
298
- unlock(false);
299
- }
300
- }
301
-
302
- /**
303
- * Get region of the given line
304
- *
305
- * @param dest Destination of characters
306
- * @param offset Offset in dest to store the chars
307
- */
308
- public void getRegionOnLine(int line, int start, int end, char[] dest, int offset) {
309
- lock(false);
310
- try {
311
- lines.get(line).getChars(start, end, dest, offset);
312
- } finally {
313
- unlock(false);
314
- }
315
- }
316
-
317
- /**
318
- * Get characters of line
319
- */
320
- public void getLineChars(int line, char[] dest) {
321
- getRegionOnLine(line, 0, getColumnCount(line), dest, 0);
322
- }
323
-
324
- /**
325
- * Transform the (line,column) position to index
326
- * This task will usually be completed by {@link Indexer}
327
- *
328
- * @param line Line of index
329
- * @param column Column on line of index
330
- * @return Transformed index for the given arguments
331
- */
332
- public int getCharIndex(int line, int column) {
333
- lock(false);
334
- try {
335
- return getIndexer().getCharIndex(line, column);
336
- } finally {
337
- unlock(false);
338
- }
339
- }
340
-
341
- /**
342
- * Check if the given {@link CharPosition} is valid in this text. Checks include line, column and index.
343
- *
344
- * @param position the position to check, maybe null
345
- * @return if the position is valid in this text. null position is always invalid.
346
- */
347
- public boolean isValidPosition(@Nullable CharPosition position) {
348
- if (position == null) {
349
- return false;
350
- }
351
- int line = position.line, column = position.column, index = position.index;
352
- lock(false);
353
- try {
354
- if (line < 0 || line >= getLineCount()) {
355
- return false;
356
- }
357
- ContentLine text = getLine(line);
358
- if (column > text.length() + text.getLineSeparator().getLength() || column < 0) {
359
- return false;
360
- }
361
- return getIndexer().getCharIndex(line, column) == index;
362
- } finally {
363
- unlock(false);
364
- }
365
- }
366
-
367
- /**
368
- * Insert content to this object
369
- *
370
- * @param line The insertion's line position
371
- * @param column The insertion's column position
372
- * @param text The text you want to insert at the position
373
- */
374
- public void insert(int line, int column, CharSequence text) {
375
- lock(true);
376
- documentVersion.getAndIncrement();
377
- try {
378
- insertInternal(line, column, text);
379
- } finally {
380
- unlock(true);
381
- }
382
- }
383
-
384
- private void insertInternal(int line, int column, CharSequence text) {
385
- checkLineAndColumn(line, column, CHECK_TYPE_CURSOR);
386
- if (text == null) {
387
- throw new IllegalArgumentException("text can not be null");
388
- }
389
- if (column > lines.get(line).length()) {
390
- // Never insert texts between line separator characters
391
- column = lines.get(line).length();
392
- }
393
-
394
- // Notify listeners and cursor manager
395
- if (cursor != null)
396
- cursor.beforeInsert(line, column);
397
-
398
- dispatchBeforeModification();
399
-
400
- int workLine = line;
401
- int workIndex = column;
402
- var currLine = makeLineMutable(workLine);
403
- var helper = InsertTextHelper.forInsertion(text);
404
- int type, peekType = InsertTextHelper.TYPE_EOF;
405
- boolean fromPeek = false;
406
- var newLines = new LinkedList<ContentLine>();
407
- var startSeparator = currLine.getLineSeparator();
408
- while (true) {
409
- type = fromPeek ? peekType : helper.forward();
410
- fromPeek = false;
411
- if (type == InsertTextHelper.TYPE_EOF) {
412
- break;
413
- }
414
- if (type == InsertTextHelper.TYPE_LINE_CONTENT) {
415
- currLine.insert(workIndex, text, helper.getIndex(), helper.getIndexNext());
416
- workIndex += helper.getIndexNext() - helper.getIndex();
417
- } else {
418
- var separator = LineSeparator.fromSeparatorString(text, helper.getIndex(), helper.getIndexNext());
419
- currLine.setLineSeparator(separator);
420
-
421
- // Peek!
422
- peekType = helper.forward();
423
- fromPeek = true;
424
-
425
- var newLine = new ContentLine(currLine.length() - workIndex + helper.getIndexNext() - helper.getIndex() + 10);
426
- newLine.insert(0, currLine, workIndex, currLine.length());
427
- currLine.delete(workIndex, currLine.length());
428
- workIndex = 0;
429
- // Newly created lines are always mutable
430
- currLine = newLine;
431
- newLines.add(newLine);
432
- workLine++;
433
- }
434
- }
435
- currLine.setLineSeparator(startSeparator);
436
- lines.addAll(line + 1, newLines);
437
- helper.recycle();
438
- textLength += text.length();
439
- this.dispatchAfterInsert(line, column, workLine, workIndex, text);
440
- }
441
-
442
- /**
443
- * Delete character in [start,end)
444
- *
445
- * @param start Start position in content
446
- * @param end End position in content
447
- */
448
- public void delete(int start, int end) {
449
- lock(true);
450
- checkIndex(start, CHECK_TYPE_CURSOR);
451
- checkIndex(end, CHECK_TYPE_CURSOR);
452
- documentVersion.getAndIncrement();
453
- try {
454
- CharPosition startPos = getIndexer().getCharPosition(start);
455
- CharPosition endPos = getIndexer().getCharPosition(end);
456
- if (start != end) {
457
- deleteInternal(startPos.line, startPos.column, endPos.line, endPos.column);
458
- }
459
- } finally {
460
- unlock(true);
461
- }
462
- }
463
-
464
- /**
465
- * Delete text in the given region
466
- *
467
- * @param startLine The start line position
468
- * @param columnOnStartLine The start column position
469
- * @param endLine The end line position
470
- * @param columnOnEndLine The end column position
471
- */
472
- public void delete(int startLine, int columnOnStartLine, int endLine, int columnOnEndLine) {
473
- lock(true);
474
- documentVersion.getAndIncrement();
475
- try {
476
- deleteInternal(startLine, columnOnStartLine, endLine, columnOnEndLine);
477
- } finally {
478
- unlock(true);
479
- }
480
- }
481
-
482
- private void deleteInternal(int startLine, int columnOnStartLine, int endLine, int columnOnEndLine) {
483
- checkLineAndColumn(endLine, columnOnEndLine, CHECK_TYPE_CURSOR);
484
- checkLineAndColumn(startLine, columnOnStartLine, CHECK_TYPE_CURSOR);
485
- if (startLine == endLine && columnOnStartLine == columnOnEndLine) {
486
- return;
487
- }
488
- var endLineObj = lines.get(endLine);
489
- if (columnOnEndLine > endLineObj.length() && endLine + 1 < getLineCount()) {
490
- // Expected to delete the whole newline
491
- deleteInternal(startLine, columnOnStartLine, endLine + 1, 0);
492
- return;
493
- }
494
- var startLineObj = lines.get(startLine);
495
- if (columnOnStartLine > startLineObj.length()) {
496
- // Expected to delete the whole newline
497
- deleteInternal(startLine, startLineObj.length(), endLine, columnOnEndLine);
498
- return;
499
- }
500
- var changedContent = new StringBuilder();
501
- if (startLine == endLine) {
502
- var curr = makeLineMutable(startLine);
503
- int len = curr.length();
504
- if (columnOnStartLine < 0 || columnOnEndLine > len || columnOnStartLine > columnOnEndLine) {
505
- throw new StringIndexOutOfBoundsException("invalid bounds");
506
- }
507
-
508
- // Notify listeners and cursor manager
509
- if (cursor != null) {
510
- cursor.beforeDelete(startLine, columnOnStartLine, endLine, columnOnEndLine);
511
- }
512
- dispatchBeforeModification();
513
-
514
- changedContent.append(curr, columnOnStartLine, columnOnEndLine);
515
- curr.delete(columnOnStartLine, columnOnEndLine);
516
- textLength -= columnOnEndLine - columnOnStartLine;
517
- } else if (startLine < endLine) {
518
- // Notify listeners and cursor manager
519
- if (cursor != null)
520
- cursor.beforeDelete(startLine, columnOnStartLine, endLine, columnOnEndLine);
521
- dispatchBeforeModification();
522
-
523
- for (int i = startLine + 1; i <= endLine - 1; i++) {
524
- var line = lines.get(i);
525
- var separator = lines.get(i).getLineSeparator();
526
- textLength -= line.length() + separator.getLength();
527
- line.appendTo(changedContent);
528
- changedContent.append(separator.getContent());
529
- line.release();
530
- }
531
- if (endLine > startLine + 1) {
532
- lines.subList(startLine + 1, endLine).clear();
533
- }
534
-
535
- int currEnd = startLine + 1;
536
- var start = makeLineMutable(startLine);
537
- var end = lines.get(currEnd);
538
- textLength -= start.length() - columnOnStartLine;
539
- changedContent.insert(0, start, columnOnStartLine, start.length())
540
- .insert(start.length() - columnOnStartLine, start.getLineSeparator().getContent());
541
- start.delete(columnOnStartLine, start.length());
542
- textLength -= columnOnEndLine;
543
- changedContent.append(end, 0, columnOnEndLine);
544
- textLength -= start.getLineSeparator().getLength();
545
- lines.remove(currEnd);
546
- start.append(new TextReference(end, columnOnEndLine, end.length()));
547
- start.setLineSeparator(end.getLineSeparator());
548
- end.release();
549
- } else {
550
- throw new IllegalArgumentException("start line > end line");
551
- }
552
- this.dispatchAfterDelete(startLine, columnOnStartLine, endLine, columnOnEndLine, changedContent);
553
- }
554
-
555
- /**
556
- * Make the given line mutable
557
- */
558
- private ContentLine makeLineMutable(int line) {
559
- var data = lines.get(line);
560
- var mut = data.toMutable();
561
- if (mut != data) {
562
- lines.set(line, mut);
563
- data.release();
564
- }
565
- return mut;
566
- }
567
-
568
- /**
569
- * Replace the text in the given region
570
- * This action will be completed by calling {@link Content#delete(int, int, int, int)} and {@link Content#insert(int, int, CharSequence)}
571
- *
572
- * @param startLine The start line position
573
- * @param columnOnStartLine The start column position
574
- * @param endLine The end line position
575
- * @param columnOnEndLine The end column position
576
- * @param text The text to replace old text
577
- */
578
- public void replace(int startLine, int columnOnStartLine, int endLine, int columnOnEndLine, CharSequence text) {
579
- if (text == null) {
580
- throw new IllegalArgumentException("text can not be null");
581
- }
582
- lock(true);
583
- documentVersion.getAndIncrement();
584
- try {
585
- this.dispatchBeforeReplace();
586
- deleteInternal(startLine, columnOnStartLine, endLine, columnOnEndLine);
587
- insertInternal(startLine, columnOnStartLine, text);
588
- } finally {
589
- unlock(true);
590
- }
591
- }
592
-
593
- /**
594
- * Replace text in the given region with the text
595
- */
596
- public void replace(int startIndex, int endIndex, @NonNull CharSequence text) {
597
- var start = getIndexer().getCharPosition(startIndex);
598
- var end = getIndexer().getCharPosition(endIndex);
599
- replace(start.line, start.column, end.line, end.column, text);
600
- }
601
-
602
- /**
603
- * Get current document version. The returned value is increasing (if the modification count is
604
- * smaller than Long.MAX_VALUE).
605
- */
606
- public long getDocumentVersion() {
607
- return documentVersion.get();
608
- }
609
-
610
- /**
611
- * Undo the last modification.
612
- * <p>
613
- * NOTE: When there are too much modification, old modification will be deleted from UndoManager
614
- */
615
- public TextRange undo() {
616
- return undoManager.undo(this);
617
- }
618
-
619
- /**
620
- * Redo the last modification
621
- */
622
- public void redo() {
623
- undoManager.redo(this);
624
- }
625
-
626
- /**
627
- * Check whether the {@link UndoManager} is working to undo/redo
628
- */
629
- public boolean isUndoManagerWorking() {
630
- return undoManager.isModifyingContent();
631
- }
632
-
633
- /**
634
- * Whether we can undo
635
- *
636
- * @return Whether we can undo
637
- */
638
- public boolean canUndo() {
639
- return undoManager.canUndo();
640
- }
641
-
642
- /**
643
- * Whether we can redo
644
- *
645
- * @return Whether we can redo
646
- */
647
- public boolean canRedo() {
648
- return undoManager.canRedo();
649
- }
650
-
651
- /**
652
- * Get whether UndoManager is enabled
653
- *
654
- * @return Whether UndoManager is enabled
655
- */
656
- public boolean isUndoEnabled() {
657
- return undoManager.isUndoEnabled();
658
- }
659
-
660
- /**
661
- * Set whether enable the UndoManager.
662
- * If false,any modification will not be taken down and previous modification that
663
- * is already in UndoManager will be removed.Does not make changes to content.
664
- *
665
- * @param enabled New state for UndoManager
666
- */
667
- public void setUndoEnabled(boolean enabled) {
668
- undoManager.setUndoEnabled(enabled);
669
- }
670
-
671
- /**
672
- * Get current max stack size of UndoManager
673
- *
674
- * @return current max stack size
675
- */
676
- public int getMaxUndoStackSize() {
677
- return undoManager.getMaxUndoStackSize();
678
- }
679
-
680
- /**
681
- * Set the max size of stack in UndoManager
682
- *
683
- * @param maxSize New max size
684
- */
685
- public void setMaxUndoStackSize(int maxSize) {
686
- undoManager.setMaxUndoStackSize(maxSize);
687
- }
688
-
689
- /**
690
- * A delegate method.
691
- * Notify the UndoManager to begin batch edit(enter a new layer).
692
- * NOTE: batch edit in Android can be nested.
693
- *
694
- * @return Whether in batch edit
695
- */
696
- public boolean beginBatchEdit() {
697
- nestedBatchEdit++;
698
- return isInBatchEdit();
699
- }
700
-
701
- /**
702
- * A delegate method.
703
- * Notify the UndoManager to end batch edit(exit current layer).
704
- *
705
- * @return Whether in batch edit
706
- */
707
- public boolean endBatchEdit() {
708
- nestedBatchEdit--;
709
- if (nestedBatchEdit == 0) {
710
- undoManager.onExitBatchEdit();
711
- }
712
- if (nestedBatchEdit < 0) {
713
- nestedBatchEdit = 0;
714
- }
715
- return isInBatchEdit();
716
- }
717
-
718
- public int getNestedBatchEdit() {
719
- return nestedBatchEdit;
720
- }
721
-
722
- public void resetBatchEdit() {
723
- nestedBatchEdit = 0;
724
- }
725
-
726
- /**
727
- * Returns whether we are in batch edit
728
- *
729
- * @return Whether in batch edit
730
- */
731
- public boolean isInBatchEdit() {
732
- return nestedBatchEdit > 0;
733
- }
734
-
735
- /**
736
- * Add a new {@link ContentListener} to the Content
737
- *
738
- * @param listener The listener to add
739
- */
740
- public void addContentListener(ContentListener listener) {
741
- if (listener == null) {
742
- throw new IllegalArgumentException("listener can not be null");
743
- }
744
- if (listener instanceof Indexer) {
745
- throw new IllegalArgumentException("Permission denied");
746
- }
747
- if (!contentListeners.contains(listener)) {
748
- contentListeners.add(listener);
749
- }
750
- }
751
-
752
- /**
753
- * Remove the given listener of this Content
754
- *
755
- * @param listener The listener to remove
756
- */
757
- public void removeContentListener(ContentListener listener) {
758
- if (listener instanceof Indexer) {
759
- throw new IllegalArgumentException("Permission denied");
760
- }
761
- contentListeners.remove(listener);
762
- }
763
-
764
- /**
765
- * Get the using {@link Indexer} object
766
- *
767
- * @return Indexer for this object
768
- */
769
- public Indexer getIndexer() {
770
- if (cursor != null) {
771
- return cursor.getIndexer();
772
- }
773
- return indexer;
774
- }
775
-
776
- /**
777
- * Quick method to get sub string of this object
778
- *
779
- * @param startLine The start line position
780
- * @param startColumn The start column position
781
- * @param endLine The end line position
782
- * @param endColumn The end column position
783
- * @return sub-sequence of this Content
784
- */
785
- public Content subContent(int startLine, int startColumn, int endLine, int endColumn) {
786
- return subContent(startLine, startColumn, endLine, endColumn, true);
787
- }
788
-
789
-
790
- /**
791
- * Quick method to get sub string of this object
792
- *
793
- * @param startLine The start line position
794
- * @param startColumn The start column position
795
- * @param endLine The end line position
796
- * @param endColumn The end column position
797
- * @param newContentThreadSafe Should the returned instance be thread-safe
798
- * @return sub-sequence of this Content
799
- */
800
- public Content subContent(int startLine, int startColumn, int endLine, int endColumn, boolean newContentThreadSafe) {
801
- lock(false);
802
- try {
803
- return subContentInternal(startLine, startColumn, endLine, endColumn, newContentThreadSafe);
804
- } finally {
805
- unlock(false);
806
- }
807
- }
808
-
809
- private Content subContentInternal(int startLine, int startColumn, int endLine, int endColumn, boolean threadSafe) {
810
- var c = new Content(null, threadSafe);
811
- c.setUndoEnabled(false);
812
- if (startLine == endLine) {
813
- var line = lines.get(startLine);
814
- if (endColumn == line.length() + 1 && line.getLineSeparator() == LineSeparator.CRLF) {
815
- if (startColumn < endColumn) {
816
- c.insert(0, 0, line.subSequence(startColumn, line.length()));
817
- c.lines.get(0).setLineSeparator(LineSeparator.CR);
818
- c.textLength++;
819
- c.lines.add(new ContentLine());
820
- }
821
- } else {
822
- c.insert(0, 0, line.subSequence(startColumn, endColumn));
823
- }
824
- } else if (startLine < endLine) {
825
- var firstLine = lines.get(startLine);
826
- if (firstLine.getLineSeparator() == LineSeparator.CRLF) {
827
- if (startColumn <= firstLine.length()) {
828
- c.insert(0, 0, firstLine.subSequence(startColumn, firstLine.length()));
829
- c.lines.get(0).setLineSeparator(firstLine.getLineSeparator());
830
- c.textLength += firstLine.getLineSeparator().getLength();
831
- } else if (startColumn == firstLine.length() + 1) {
832
- c.lines.get(0).setLineSeparator(LineSeparator.LF);
833
- c.textLength += LineSeparator.LF.getLength();
834
- } else {
835
- throw new IndexOutOfBoundsException();
836
- }
837
- } else {
838
- c.insert(0, 0, firstLine.subSequence(startColumn, firstLine.length()));
839
- c.lines.get(0).setLineSeparator(firstLine.getLineSeparator());
840
- c.textLength += firstLine.getLineSeparator().getLength();
841
- }
842
- for (int i = startLine + 1; i < endLine; i++) {
843
- var line = lines.get(i);
844
- c.lines.add(new ContentLine(line));
845
- c.textLength += line.length() + line.getLineSeparator().getLength();
846
- }
847
- var end = lines.get(endLine);
848
- if (endColumn == end.length() + 1 && end.getLineSeparator() == LineSeparator.CRLF) {
849
- var newLine = new ContentLine().insert(0, end, 0, endColumn - 1);
850
- c.lines.add(newLine);
851
- newLine.setLineSeparator(LineSeparator.CR);
852
- c.textLength += endColumn + 1;
853
- } else {
854
- c.lines.add(new ContentLine().insert(0, end, 0, endColumn));
855
- c.textLength += endColumn;
856
- }
857
- } else {
858
- throw new StringIndexOutOfBoundsException("start > end");
859
- }
860
- c.setUndoEnabled(true);
861
- return c;
862
- }
863
-
864
- private StringBuilder subStringBuilder(int startLine, int startColumn, int endLine, int endColumn, int length) {
865
- var sb = new StringBuilder(length);
866
- if (startLine == endLine) {
867
- var line = lines.get(startLine);
868
- if (endColumn == line.length() + 1 && line.getLineSeparator() == LineSeparator.CRLF) {
869
- if (startColumn < endColumn) {
870
- sb.append(lines.get(startLine), startColumn, line.length())
871
- .append(LineSeparator.CR.getContent());
872
- }
873
- } else {
874
- sb.append(lines.get(startLine), startColumn, endColumn);
875
- }
876
- } else if (startLine < endLine) {
877
- var firstLine = lines.get(startLine);
878
- if (firstLine.getLineSeparator() == LineSeparator.CRLF) {
879
- if (startColumn <= firstLine.length()) {
880
- sb.append(firstLine, startColumn, firstLine.length());
881
- sb.append(firstLine.getLineSeparator().getContent());
882
- } else if (startColumn == firstLine.length() + 1) {
883
- sb.append(LineSeparator.LF.getContent());
884
- } else {
885
- throw new IndexOutOfBoundsException();
886
- }
887
- } else {
888
- sb.append(firstLine, startColumn, firstLine.length());
889
- sb.append(firstLine.getLineSeparator().getContent());
890
- }
891
- for (int i = startLine + 1; i < endLine; i++) {
892
- var line = lines.get(i);
893
- sb.append(line)
894
- .append(line.getLineSeparator().getContent());
895
- }
896
- var end = lines.get(endLine);
897
- if (endColumn == end.length() + 1 && end.getLineSeparator() == LineSeparator.CRLF) {
898
- sb.append(end, 0, endColumn)
899
- .append(LineSeparator.CR.getContent());
900
- } else {
901
- sb.append(end, 0, endColumn);
902
- }
903
- } else {
904
- throw new StringIndexOutOfBoundsException("start > end");
905
- }
906
- return sb;
907
- }
908
-
909
- @NonNull
910
- public Directions getLineDirections(int line) {
911
- lock(false);
912
- try {
913
- return bidi.getLineDirections(lines.get(line), line);
914
- } finally {
915
- unlock(false);
916
- }
917
- }
918
-
919
- public void setBidiEnabled(boolean enabled) {
920
- bidi.setEnabled(enabled);
921
- }
922
-
923
- public boolean isBidiEnabled() {
924
- return bidi.isEnabled();
925
- }
926
-
927
- public boolean isRtlAt(int line, int column) {
928
- var dirs = getLineDirections(line);
929
- for (int i = 0; i < dirs.getRunCount(); i++) {
930
- if (column >= dirs.getRunStart(i) && column < dirs.getRunEnd(i)) {
931
- return dirs.isRunRtl(i);
932
- }
933
- }
934
- return false;
935
- }
936
-
937
- @Override
938
- public boolean equals(Object anotherObject) {
939
- if (anotherObject instanceof Content content) {
940
- if (content.length() != this.length()) {
941
- return false;
942
- }
943
- for (int i = 0; i < this.getLineCount(); i++) {
944
- if (!textEquals(lines.get(i), content.lines.get(i))) {
945
- return false;
946
- }
947
- }
948
- return true;
949
- } else {
950
- return false;
951
- }
952
- }
953
-
954
- @Override
955
- public int hashCode() {
956
- return Objects.hash(lines, textLength);
957
- }
958
-
959
- @NonNull
960
- @Override
961
- public String toString() {
962
- return toStringBuilder().toString();
963
- }
964
-
965
- /**
966
- * Get the text in StringBuilder form
967
- * <p>
968
- * This can improve the speed in char reading for tokenizing
969
- *
970
- * @return StringBuilder form of Content
971
- */
972
- public StringBuilder toStringBuilder() {
973
- var sb = new StringBuilder();
974
- appendToStringBuilder(sb);
975
- return sb;
976
- }
977
-
978
- /**
979
- * Get UndoManager instance in use
980
- */
981
- public UndoManager getUndoManager() {
982
- return undoManager;
983
- }
984
-
985
- /**
986
- * Set undo manager. You may use this to recover to a previously saved state of undo stack.
987
- */
988
- public void setUndoManager(UndoManager manager) {
989
- this.undoManager = manager;
990
- }
991
-
992
- /**
993
- * Append the content to the given {@link StringBuilder}
994
- */
995
- public void appendToStringBuilder(StringBuilder sb) {
996
- sb.ensureCapacity(sb.length() + length());
997
- lock(false);
998
- try {
999
- final int lines = getLineCount();
1000
- for (int i = 0; i < lines; i++) {
1001
- var line = this.lines.get(i);
1002
- line.appendTo(sb);
1003
- sb.append(line.getLineSeparator().getContent());
1004
- }
1005
- } finally {
1006
- unlock(false);
1007
- }
1008
- }
1009
-
1010
- /**
1011
- * Get Cursor for editor (Create if there is not)
1012
- *
1013
- * @return Cursor
1014
- */
1015
- public Cursor getCursor() {
1016
- if (cursor == null) {
1017
- cursor = new Cursor(this);
1018
- }
1019
- return cursor;
1020
- }
1021
-
1022
- /**
1023
- * Check if there is a cursor created for this Content object
1024
- */
1025
- public boolean isCursorCreated() {
1026
- return cursor != null;
1027
- }
1028
-
1029
- /**
1030
- * Dispatch events to listener before replacement
1031
- */
1032
- private void dispatchBeforeReplace() {
1033
- undoManager.beforeReplace(this);
1034
- if (cursor != null)
1035
- cursor.beforeReplace();
1036
- if (indexer instanceof ContentListener) {
1037
- ((ContentListener) indexer).beforeReplace(this);
1038
- }
1039
- for (ContentListener lis : contentListeners) {
1040
- lis.beforeReplace(this);
1041
- }
1042
- }
1043
-
1044
- /**
1045
- * Dispatch events to listener after deletion
1046
- *
1047
- * @param a Start line
1048
- * @param b Start Column
1049
- * @param c End line
1050
- * @param d End column
1051
- * @param e Text deleted
1052
- */
1053
- private void dispatchAfterDelete(int a, int b, int c, int d, @NonNull CharSequence e) {
1054
- undoManager.afterDelete(this, a, b, c, d, e);
1055
- if (cursor != null)
1056
- cursor.afterDelete(a, b, c, d, e);
1057
- if (indexer instanceof ContentListener) {
1058
- ((ContentListener) indexer).afterDelete(this, a, b, c, d, e);
1059
- }
1060
- for (ContentListener lis : contentListeners) {
1061
- lis.afterDelete(this, a, b, c, d, e);
1062
- }
1063
- }
1064
-
1065
- private void dispatchBeforeModification() {
1066
- undoManager.beforeModification(this);
1067
- for (ContentListener lis : contentListeners) {
1068
- lis.beforeModification(this);
1069
- }
1070
- }
1071
-
1072
- /**
1073
- * Dispatch events to listener after insertion
1074
- *
1075
- * @param a Start line
1076
- * @param b Start Column
1077
- * @param c End line
1078
- * @param d End column
1079
- * @param e Text deleted
1080
- */
1081
- private void dispatchAfterInsert(int a, int b, int c, int d, @NonNull CharSequence e) {
1082
- undoManager.afterInsert(this, a, b, c, d, e);
1083
- if (cursor != null)
1084
- cursor.afterInsert(a, b, c, d, e);
1085
- if (indexer instanceof ContentListener) {
1086
- ((ContentListener) indexer).afterInsert(this, a, b, c, d, e);
1087
- }
1088
- for (ContentListener lis : contentListeners) {
1089
- lis.afterInsert(this, a, b, c, d, e);
1090
- }
1091
- }
1092
-
1093
- /**
1094
- * Check whether the index is valid
1095
- *
1096
- * @param index Index to check
1097
- */
1098
- protected void checkIndex(int index, int checkType) {
1099
- if ((checkType == CHECK_TYPE_READ ? index >= length() : index > length()) || index < 0) {
1100
- throw new StringIndexOutOfBoundsException("Index " + index + " out of bounds. length:" + length());
1101
- }
1102
- }
1103
-
1104
- /**
1105
- * Check whether the line is valid
1106
- *
1107
- * @param line Line to check
1108
- */
1109
- protected void checkLine(int line) {
1110
- if (line >= getLineCount() || line < 0) {
1111
- throw new StringIndexOutOfBoundsException("Line " + line + " out of bounds. line count:" + getLineCount());
1112
- }
1113
- }
1114
-
1115
- /**
1116
- * Check whether the line and column is valid
1117
- *
1118
- * @param line The line to check
1119
- * @param column The column to check
1120
- */
1121
- protected void checkLineAndColumn(int line, int column, int checkType) {
1122
- checkLine(line);
1123
- var text = lines.get(line);
1124
- // Clarify valid line positions here
1125
- // Check Type Valid Range
1126
- // READ [0, columnCount+lineSepLength)
1127
- // INSERT [0, columnCount]
1128
- // INDEX See CachedIndexer
1129
- switch (checkType) {
1130
- case CHECK_TYPE_READ -> {
1131
- int len = text.length() + text.getLineSeparator().getLength();
1132
- if (column >= len || column < 0) {
1133
- throw new StringIndexOutOfBoundsException(
1134
- "Column " + column + " out of bounds for READ. line: " + line + ", valid range: [0, " + len + ")");
1135
- }
1136
- }
1137
- case CHECK_TYPE_CURSOR -> {
1138
- int len = text.length();
1139
- if (column > len || column < 0) {
1140
- throw new StringIndexOutOfBoundsException(
1141
- "Column " + column + " out of bounds for CURSOR. line: " + line + ", valid range: [0, " + len + "]");
1142
- }
1143
- }
1144
- case CHECK_TYPE_INDEX -> {
1145
- int len = text.length() + text.getLineSeparator().getLength();
1146
- if (line == getLineCount() - 1) {
1147
- if (column > len || column < 0) {
1148
- throw new StringIndexOutOfBoundsException(
1149
- "Column " + column + " out of bounds for INDEX. line: " + line + ", valid range: [0, " + len + "]");
1150
- }
1151
- } else {
1152
- if (column >= len || column < 0) {
1153
- throw new StringIndexOutOfBoundsException(
1154
- "Column " + column + " out of bounds for INDEX. line: " + line + ", valid range: [0, " + len + ")");
1155
- }
1156
- }
1157
- }
1158
- }
1159
- }
1160
-
1161
- /**
1162
- * Copy text in this Content object.
1163
- * Returns a new thread-safe Content object with the same text as this object. By default, the object is
1164
- * thread-safe and access operations are locked when accessed by multiple threads.
1165
- */
1166
- public Content copyText() {
1167
- return copyText(true);
1168
- }
1169
-
1170
- /**
1171
- * Copy text in this Content object.
1172
- * Returns a new Content object with the same text as this object.
1173
- */
1174
- public Content copyText(boolean newContentThreadSafe) {
1175
- return copyText(newContentThreadSafe, false);
1176
- }
1177
-
1178
- /**
1179
- * Copy text in this Content object.
1180
- * Returns a new Content object with the same text as this object.
1181
- */
1182
- public Content copyText(boolean newContentThreadSafe, boolean shallow) {
1183
- lock(false);
1184
- try {
1185
- var n = new Content(null, newContentThreadSafe);
1186
- n.lines.remove(0);
1187
- ((ArrayList<ContentLine>) n.lines).ensureCapacity(getLineCount());
1188
- if (shallow) {
1189
- for (ContentLine line : lines) {
1190
- line.retain();
1191
- }
1192
- n.lines.addAll(lines);
1193
- } else {
1194
- for (ContentLine line : lines) {
1195
- n.lines.add(new ContentLine(line));
1196
- }
1197
- }
1198
- n.textLength = textLength;
1199
- return n;
1200
- } finally {
1201
- unlock(false);
1202
- }
1203
- }
1204
-
1205
- /**
1206
- * Shallow copy text in this Content object.
1207
- * Returns a new Content object with the same text as this object. By default, the object is not
1208
- * thread-safe and should be accessed by a single thread.
1209
- */
1210
- public Content copyTextShallow() {
1211
- return copyTextShallow(false);
1212
- }
1213
-
1214
- /**
1215
- * Shallow copy text in this Content object.
1216
- * Returns a new Content object with the same text as this object.
1217
- */
1218
- public Content copyTextShallow(boolean newContentThreadSafe) {
1219
- return copyText(newContentThreadSafe, true);
1220
- }
1221
-
1222
- /**
1223
- * Release this text object.
1224
- * Release any shareable instance currently held. It's recommended to call this after a shallow copied
1225
- * instance is no longer used.
1226
- */
1227
- public void release() {
1228
- lock(true);
1229
- try {
1230
- for (ContentLine line : lines) {
1231
- line.release();
1232
- }
1233
- lines.clear();
1234
- textLength = 0;
1235
- this.cursor = null;
1236
- this.bidi.destroy();
1237
- } finally {
1238
- unlock(true);
1239
- }
1240
- }
1241
-
1242
- protected int getColumnCountUnsafe(int line) {
1243
- return lines.get(line).length();
1244
- }
1245
-
1246
- @NonNull
1247
- protected LineSeparator getLineSeparatorUnsafe(int line) {
1248
- return lines.get(line).getLineSeparator();
1249
- }
1250
-
1251
- /**
1252
- * Read the lines (ordered).
1253
- * This is for optimizing frequent lock acquiring.
1254
- *
1255
- * @param startLine inclusive
1256
- * @param endLine inclusive
1257
- */
1258
- public void runReadActionsOnLines(int startLine, int endLine, @NonNull ContentLineConsumer consumer) {
1259
- lock(false);
1260
- try {
1261
- for (int i = startLine; i <= endLine; i++) {
1262
- var t = lines.get(i);
1263
- consumer.accept(i, t, bidi.getLineDirections(t, i));
1264
- }
1265
- } finally {
1266
- unlock(false);
1267
- }
1268
- }
1269
-
1270
- /**
1271
- * Read the lines (ordered).
1272
- * This is for optimizing frequent lock acquiring.
1273
- *
1274
- * @param startLine inclusive
1275
- * @param endLine inclusive
1276
- */
1277
- public void runReadActionsOnLines(int startLine, int endLine, @NonNull ContentLineConsumer2 consumer) {
1278
- lock(false);
1279
- try {
1280
- var flag = new ContentLineConsumer2.AbortFlag();
1281
- for (int i = startLine; i <= endLine && !flag.set; i++) {
1282
- consumer.accept(i, lines.get(i), flag);
1283
- }
1284
- } finally {
1285
- unlock(false);
1286
- }
1287
- }
1288
-
1289
-
1290
- public interface ContentLineConsumer {
1291
-
1292
- void accept(int lineIndex, @NonNull ContentLine line, @NonNull Directions dirs);
1293
-
1294
- }
1295
-
1296
- public interface ContentLineConsumer2 {
1297
-
1298
- void accept(int lineIndex, @NonNull ContentLine line, @NonNull AbortFlag flag);
1299
-
1300
- class AbortFlag {
1301
- public boolean set = false;
1302
- }
1303
-
1304
- }
1305
- }
1306
-