microsoft / vscode

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

[folding] allow defining folding regions in user settings and/or extensions #36002

Open ghost opened 7 years ago

ghost commented 7 years ago

Would it be able to abstract out the language specifics and treat code folding similar to how emmet handles it... i.e.

    "emmet.includeLanguages": {
        "php": "html",
        "blade": "html",
        "javascript": "javascriptreact"
    },

So for code folding it could be...

    "codeFolding.IncludeLanguages": {
        "php": {
            "openTag": "//#region",
            "closeTage": "//#endregion"
        },
        ...etc...
    }

This is just an off the cuff idea for implementing this and I'm not sure that it's possible, but the goal would be to not be dependent on the language plugin developers to implement the feature.

ghost commented 7 years ago

@ramya-rao-a this isn't actually emmet related. Emmet was noted simply to be an implementation option to reference.

ramya-rao-a commented 7 years ago

Thanks @jm-mwi. I have updated the labels accordingly

aeschli commented 7 years ago

@jm-mwi The configuration of the folding markers is already language specific, in the language's 'language-configuration' file. But its not part of the user settings yet.

Ptiloup commented 6 years ago

Is it possible to add to javascript-language-configuration.json the "editor-fold" tag ?

"folding": {
    "markers": {
        "start": "^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))",
        "end": "^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))"
    }
}
aeschli commented 6 years ago

@Ptiloup Sure, please create a PR or a new issue!

costincaraivan commented 6 years ago

This is a sort of +1 comment. Please expose these settings directly in the user settings so that we don't have to go mucking about with PRs for each and every language.

See also my comment from the Vim issue. Ideally there would also be a catch-all folding marker for all the files that don't necessarily have a plugin, so that you can still get folding even if VS Code does not have explicit support for the specific file type.

Something like:

"codeFolding.IncludeLanguages": {
        "*": {  // Maybe use "any" or "all" instead of just "*" as the wildcard?
            "openTag": "//#region",
            "closeTag": "//#endregion"
        },
        ...etc...
 }

This helps with the use case of using VS Code as a generic editor, a replacement for Notepad++, Sublime Text, Vim, etc.

aeschli commented 6 years ago

@costincaraivan To vote for a feature please add a 👍 to the description

daiyam commented 6 years ago

Hi,

I've done a quick experimental extension to add custom folding: Zokugun Folding. The main problem is that I can't remove the existing folding so you get 2 folding providers...

Braunson commented 1 year ago

Any update to this? It would be nice to have the ability to define the open/end tags for regions.

Edit: Ended up using maptz.regionfolder

daiyam commented 1 year ago

You could use https://marketplace.visualstudio.com/items?itemName=zokugun.explicit-folding

riddlew commented 3 months ago

Any news on this? I'd love to have this feature. In vim and emacs I would usually use // {{{ and // }}} to define custom fold regions, but unfortunately this is missing from vscode. It would be nice to have this as a native setting, as I've tried plugins in the past but often had issues with them.