CodeEditApp / CodeEditSourceEditor

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

✨ Code Folding Ribbon #43

Open gaetgu opened 2 years ago

gaetgu commented 2 years ago

Is your feature request related to a problem? Please describe.

No response

Describe the solution you'd like

One of the features that I love most about XCode specifically is the code folding ribbon to the side. You can fold a level of braces by clicking anywhere in the gradient level that you want.

Screen Shot 2022-04-24 at 8 30 03 AM

Hover:

Screen Shot 2022-04-24 at 8 31 04 AM

Clicked (folded code):

Screen Shot 2022-04-24 at 8 31 40 AM

Here is a short recording of the whole process. There is a fancy animation that is not necessary, but it would be pretty cool to have!

https://user-images.githubusercontent.com/47652746/164981601-56c531e4-9420-4d46-96d7-f9d8456e5821.mov

Describe alternatives you've considered

n/a

Additional context

For reference, here is a picture of the ribbon in both dark and light mode:

imgonline-com-ua-twotoone-0btV6nX2OfPxYH
gaetgu commented 2 years ago

I have been messing around with CoreGraphics a little bit, and it looks like the ribbon is a gray (in light mode), transparent line with a width of 7 (not 6 or 8, which I find strange) and a round cap. They also have a very fine white stroke around the edge. My experiments are not that great and I can't quite get them to play nice with SwiftUI views, but I thought I would leave that basic information here in case it helps.

nanashili commented 2 years ago

I have been messing around with CoreGraphics a little bit, and it looks like the ribbon is a gray (in light mode), transparent line with a width of 7 (not 6 or 8, which I find strange) and a round cap. They also have a very fine white stroke around the edge. My experiments are not that great and I can't quite get them to play nice with SwiftUI views, but I thought I would leave that basic information here in case it helps.

Apple likes using odd numbers in everything

austincondiff commented 2 years ago

I never understood this. I typically like designing in multiples of 2 (2, 4, 8, 12, 16, 20, 24, 32, 40, 48, 56, 64, 72, 80, 96, 104, etc.) because they can always divide into two without falling on a subpixel. This is especially helpful when dealing with responsive layouts and 1x and 2x densities. I think Apple chooses to design in odd numbers so that it can always have a center pixel.

austincondiff commented 1 year ago

This may require #127 to be complete in order to begin working on this.