Skip to content

Choose a tag to compare

@luah5 luah5 released this 10 Dec 13:04
40d8e88
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>