You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
The key has expired.
Custom Text View (#211)
<!--- IMPORTANT: If this PR addresses multiple unrelated issues, it will
be closed until separated. -->
### Description
Replaces `STTextView` with a custom TextView implementation. Creates a
new `TextView` and `TextViewController` classes that manage rendering
text, handling text input, and keybinds. `TextViewController` replaces
the `STTextViewController` class, connecting existing TextFormation
classes, syntax highlighting, and other existing text view extensions.
### Related Issues
* closes #208
* closes #195
* closes #184
* closes #57
### Checklist
TextView TODOs:
- [X] load text
- [X] render text
- [X] scroll
- [X] wrap text
- [X] resize
- [x] syntax highlighting
- [x] cursor
- [x] edit text
- [x] isEditable
- [x] Insert
- [x] Delete
- [x] Delete line
- [x] Delete word
- [x] Delete character
- [x] Delete across lines
- [x] Paste
- [x] [Marked
Text](https://developer.apple.com/library/archive/documentation/TextFonts/Conceptual/CocoaTextArchitecture/TextEditing/TextEditing.html#//apple_ref/doc/uid/TP40009459-CH3-SW26)
- [x] Line Numbers
- [x] Select text
- [x] Copy
- [x] Multiple cursors
- [x] Keyboard navigation
- [x] Arrow keys
- [x] Command & control arrow keys
- [ ] Page up and down
- [x] Tab widths & indents
- [x] Live parameter updating
- [x] Undo/redo
- [x] Sync system appearance
- [x] Highlight brackets
- [x] TextFormation integration
- [ ] ~MacOS Sonoma cursor~ Leaving for future PR. Will require rework
of cursor view system.
- [x] Update text from SwiftUI Binding (two-way binding)
- [x] Accessibility
- [x] Drag and Drop (bad, will need a rework but okay for now)
--
- [x] I read and understood the [contributing
guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md)
as well as the [code of
conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md)
- [x] The issues this PR addresses are related to each other
- [x] My changes generate no new warnings
- [x] My code builds and runs on my machine
- [x] My changes are all related to the related issue above
- [x] I documented my code
### Screenshots
`// TODO`
---------
Co-authored-by: Austin Condiff <austin.condiff@gmail.com>
Co-authored-by: Wesley de Groot <email@wesleydegroot.nl>