Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ Custom Text View #208

Closed
thecoolwinter opened this issue Aug 31, 2023 · 0 comments · Fixed by #211
Closed

✨ Custom Text View #208

thecoolwinter opened this issue Aug 31, 2023 · 0 comments · Fixed by #211
Labels
enhancement New feature or request

Comments

@thecoolwinter
Copy link
Collaborator

thecoolwinter commented Aug 31, 2023

Description

Creating a custom text view provides opportunities for optimization and customization that wouldn't otherwise be available using TextKit APIs.

This issue is a tracking issue for the custom text view draft PR.

@thecoolwinter thecoolwinter added the enhancement New feature or request label Aug 31, 2023
This was referenced Aug 31, 2023
austincondiff added a commit that referenced this issue Dec 9, 2023
<!--- 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: 🏁 Complete
Development

Successfully merging a pull request may close this issue.

1 participant