You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The VS Code 1.21 release added a new (proposed) API for folding support. The API currently includes three different "types" of folding.
exportenumFoldingRangeType{/** * Folding range for a comment */Comment='comment',/** * Folding range for a imports or includes */Imports='imports',/** * Folding range for a region (e.g. `#region`) */Region='region'}
Should folding support be added for Dockerfiles? If yes, what should be considered as something that can be folded by the user? And what "type" should they be? I think the obvious one is multiline comments but what else?
Here are some scenarios I thought of:
any instruction that spans multiple lines (Region type)
only RUN instructions that span multiple lines (Region type)
build stages, if you have two or more FROM instructions then every FROM that gets detected would be considered a folding region for its build stage (Region type)
initial set of (ARG) instructions that come before the first FROM instruction in a Dockerfile (could be Imports or Region type, I'm not sure)
If we consider both 1 and 3 then there is a problem because you end up returning two different folding regions with the same starting line. Consider the following Dockerfile:
FROM node
AS setup
RUN /blah/blah
FROM node AS test
RUN /blah/blah
This Dockerfile would have a folding region from 1-2 (for the multiline FROM instruction) as well as 1-3 (for the setup build stage). I'm not sure how VS Code handles this right now but it doesn't feel like a great user experience. I do realize that this example is a bit contrived as I don't think anyone writes FROM instructions like that but I think it's something that needs to be considered in the implementation.
Looking forward to any feedback and comments from the vscode-docker community! Thanks!
The text was updated successfully, but these errors were encountered:
I've thought about this some more and am considering adding folding support for build stages, multi-line instructions, and such without specifying a type (as they really shouldn't be considered in the same vein as a C# #Region block).
One thing I'm quite missing when editing Dockerfiles in VS Code is `region folding.
Besides code organization, region folding is useful when creating Dockerfiles for many tasks like:
Focusing on one section/piece of code, hiding others to avoid distractions.
Folding sections with many lines for comparing the code above and below these sections.
Formalizing and giving a title for a section of code, categorizing it according to its purposes. E.g.: region apt, region python, region network, etc...
Regarding the feedback that @rcjsuen talks above, perhaps it's worth considering that:
Structural folding, using language features such as build stages, and multi-line commands, is great and brings quickly valuable agility without requiring any effort from the developer.
Region folding also contributes a lot and can perfectly complement and coexist with structural folding because:
It will not obstruct or clutter the code because it's opt/in.
There will be no effort or tax for the user who does want to use them.
It allows the developer to put it only when and where he wants.
Being comments, it does not interfere with the code itself.
The VS Code 1.21 release added a new (proposed) API for folding support. The API currently includes three different "types" of folding.
Should folding support be added for Dockerfiles? If yes, what should be considered as something that can be folded by the user? And what "type" should they be? I think the obvious one is multiline comments but what else?
Here are some scenarios I thought of:
Region
type)RUN
instructions that span multiple lines (Region
type)FROM
instructions then everyFROM
that gets detected would be considered a folding region for its build stage (Region
type)ARG
) instructions that come before the firstFROM
instruction in a Dockerfile (could beImports
orRegion
type, I'm not sure)If we consider both 1 and 3 then there is a problem because you end up returning two different folding regions with the same starting line. Consider the following Dockerfile:
This Dockerfile would have a folding region from 1-2 (for the multiline
FROM
instruction) as well as 1-3 (for thesetup
build stage). I'm not sure how VS Code handles this right now but it doesn't feel like a great user experience. I do realize that this example is a bit contrived as I don't think anyone writesFROM
instructions like that but I think it's something that needs to be considered in the implementation.Looking forward to any feedback and comments from the vscode-docker community! Thanks!
The text was updated successfully, but these errors were encountered: