microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
163.26k stars 28.88k forks source link

[folding] custom folding text for folded ranges #70794

Open maptz opened 5 years ago

maptz commented 5 years ago

Currently when you create custom folds using a FoldingRangeProvider, there is no option to edit the text that is displayed when the text is folded. The editor just displays the first line of the fold with a three dots symbol after it.

#region Some region description...

It would be helpful if it was possible for FoldingRangeProvider instances to return ranges with a RangeDisplayName property that would be displayed when the folding range wass collapsed. I'd suggest that the display text would replace the ... symbol and the first line would no longer be displayed as per the behaviour in Visual Studio.

vscodebot[bot] commented 5 years ago

(Experimental duplicate detection) Thanks for submitting this issue. Please also check if it is already covered by an existing one, like:

Qhesz commented 5 years ago

Is there any scope for community contributions to this feature request?

aeschli commented 5 years ago

PRs are always welcome, but I think this is not an easy fix. https://github.com/microsoft/vscode/blob/master/src/vs/editor/contrib/folding/folding.ts is the starting point. ... are done with css :after decorations.

ihdavids commented 3 years ago

Being able to remove the fold indicator would also be really nice. Modes like markdown could auto fold the link part of a link and unfold them as the cursor moves over a link to help declutter the visualization of the document being edited.

Emacs org mode does this for links and it is pretty slick.

ris58h commented 2 years ago

I believe that before implementing this we need to answer a question: should we replace the whole first line or just the ... placeholder?

In Visual Studio #region

Screenshot 2022-03-21 at 16 29 36

folds to

Screenshot 2022-03-21 at 16 29 47

but function body

Screenshot 2022-03-21 at 16 40 04

folds to

Screenshot 2022-03-21 at 16 40 19

I know that Visual Studio operates with char-ranges instead of line-ranges, but in VSCode we only have line-ranges, so we have to deal with it and we need to decide what will be the behavior for line-folding.

mtbaqer commented 1 year ago

Hey, wanted to take a stab at this issue since it would be really helpful for the extension we are working on, but I don't see a help wanted label. So wanted to clarify the https://github.com/microsoft/vscode/issues/70794#issuecomment-513154063 above, can we provide a community PR for this?

aeschli commented 1 year ago

@mtbaqer Yes, PR's are welcome

mtbaqer commented 1 year ago

Great. Thanks for the clarification. One more question, I assume startCharacter can be be any value besides 0 as well? To replace parts of the first line? Or is there something in the current implementation that would stop that and we need to treat 0 as a special input?

aeschli commented 1 year ago

VS Code only supports full lines to be folded. So startCharacter is ignored.

phazei commented 1 week ago

It should always show the first line. I'm folding tests and this:

        it('includes messages within the specified date range', async function () {
            const params = {
                 ....
            }
        })

Folds to this:

    it(...)

which isn't very useful. It should also show the contents when I hover over the line without having to unfold it.

IllusionMH commented 1 week ago

@phazei looks like you have issue with some extension and should report it in extension's repo, because that not how VS Code folding works.

VS Code folds test function (not call of it) and keeps its first and last lines as is and test nave if visible image

phazei commented 1 week ago

@IllusionMH ah, yeah, my bad, that does work proper without the extensions. I had an extension that would provide more context but apparently doesn't in some cases.