CodeEditApp / CodeEditSourceEditor

A code editor view written in Swift powered by tree-sitter.
https://codeeditapp.github.io/CodeEditSourceEditor/documentation/codeeditsourceeditor
MIT License
504 stars 74 forks source link

🐞 Text styling and syntax highlighting are very unreliable #162

Closed nkleemann closed 1 year ago

nkleemann commented 1 year ago

Description

Text styling (both color and font) sometimes won't get applied after pasting, or typing in text.

Sometimes, the styling get's applied when I scroll the EditorView, that's why you can see my scroll a few times in the screen recording. It's not working though..

I say "sometimes" because I can't always reproduce it, and I've found no other correlations. This bug occurs roughly 3 out of 5 times trying to paste, or type, text into the editor view.

This is my EditorTheme (same thing happens with black on white btw, but still):

@State var theme = EditorTheme(
        text: .white,
        insertionPoint: .white,
        invisibles: .gray,
        background: .black,
        lineHighlight: .init(white: 0.2, alpha: 0.6),
        selection: .blue,
        keywords: .systemPink,
        commands: .systemPink,
        types: .systemMint,
        attributes: .systemTeal,
        variables: .systemMint,
        values: .systemOrange,
        numbers: .systemCyan,
        strings: .systemRed,
        characters: .systemRed,
        comments: .systemGreen
)

To Reproduce

  1. Use the basic Example provided in the README
  2. Paste in code blocks, or try to type in text at the bottom of the editor view.

Expected Behavior

Upon entering any text into the editor view it should get processed and styled immediately.

Version Information

CodeEditTextView: 0.4.0 macOS: 13.2.1 Xcode: 14.2 (14C18)

Additional Context

No response

Screenshots

https://user-images.githubusercontent.com/8692579/225445195-5509cec8-5635-479b-b2a8-b5eeda54a585.mov

thecoolwinter commented 1 year ago

From your video it looks like this is the same problem as #142. Can you try copy-pasting something in a document with a lot more text in it? Enough to fill the screen at least.

nkleemann commented 1 year ago

It's always the same result; and the position the text is pasted into doesn't matter. Sometimes it happens in an empty file, or end of file, sometimes when pasting in-between other blocks of code. Sadly I can't reproduce it, it seems totally stochastic.

Also keep in mind that it's not only pasting - normal text input also often doesn't get highlighted.

I just tried this with the CodeEdit alpha and confirmed it there too.

thecoolwinter commented 1 year ago

I'd like to look into this further but still can't reproduce it. There's been some large changes to the highlighting system in #150, #171 and #173 specifically that would apply to text pasted into the editor. Before doing more work on this can you confirm it's still an issue for you in the latest CodeEdit version that includes those changes, 0.0.3-alpha-32?

nkleemann commented 1 year ago

I just bumped my version to 0.6.1 and all issues are resolved for me. Thank you!