Skip to content

✨ Code Folding #43

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

Open
gaetgu opened this issue Apr 24, 2022 · 6 comments
Open

✨ Code Folding #43

gaetgu opened this issue Apr 24, 2022 · 6 comments
Assignees
Labels
editor enhancement New feature or request UI

Comments

@gaetgu
Copy link

gaetgu commented Apr 24, 2022

Description

Code folding allows developers to collapse and expand sections of code (such as functions, classes, conditionals, and comments) to reduce visual clutter and focus on the parts they’re working on. This feature is particularly useful when navigating large files or deeply nested structures.

Proposed Behavior

  • Enable folding for code blocks such as:
    • Functions and methods
    • Classes and structs
    • Loops and conditionals
    • Multi-line comments and regions
  • Display a vertical folding ribbon in the gutter next to line numbers, where users can click to collapse or expand blocks.
  • Collapsed blocks should show an inline indicator with an expand toggle.
  • Optionally, include editor commands for fold all / unfold all.

Implementation Notes

  • Can be powered by the existing Tree-sitter syntax trees to determine foldable ranges based on code structure.
  • Should maintain fold state across file/tab switches and ideally across sessions.
  • Folding ribbon interactions should be smooth and intuitive, with hover states and visual cues.
  • Should add animation for folding and unfolding to make transitions feel natural and responsive.

Benefits

  • Reduces visual noise and helps maintain focus while editing.
  • Makes it easier to navigate and manage large files.
  • Provides a cleaner overview of structural code layout.

Additional Context

The folding ribbon provides a familiar and discoverable UI for interacting with folded sections and complements keyboard or menu-based folding commands.

Screenshots

Screen.Recording.2022-04-24.at.8.32.40.AM.mov
Additional Screenshots 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

dark and light mode:
imgonline-com-ua-twotoone-0btV6nX2OfPxYH

@gaetgu gaetgu added the enhancement New feature or request label Apr 24, 2022
@gaetgu
Copy link
Author

gaetgu commented Apr 26, 2022

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
Copy link

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
Copy link
Collaborator

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.

@stale stale bot added the wontfix This will not be worked on label Jun 26, 2022
@CodeEditApp CodeEditApp deleted a comment from stale bot Jun 26, 2022
@stale stale bot removed the wontfix This will not be worked on label Jun 26, 2022
@austincondiff austincondiff changed the title ✨ Add Code Folding Ribbon ✨ Code Folding Ribbon Jun 28, 2022
@austincondiff austincondiff transferred this issue from CodeEditApp/CodeEdit Jun 28, 2022
@austincondiff
Copy link
Collaborator

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

@inlinecoder
Copy link

inlinecoder commented Jan 9, 2025

My 5 cents: while this ribbon looks great in XCode... well, it just looks great and brings close to zero value.
What does make life easier and is actually helpful is code blocks indents.

Hopefully, this feature won't implement XCodes' direction blindly. 🤞

UPD 5 mins later: I was referring to #65

Image

@austincondiff austincondiff changed the title ✨ Code Folding Ribbon ✨ Code Folding Feb 27, 2025
@austincondiff
Copy link
Collaborator

FYI, I've added the issue description for increased clarity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
editor enhancement New feature or request UI
Projects
Status: 🏃‍♂️ In Progress
Development

No branches or pull requests

6 participants